为什么这里不能用==比较

来源:2-4 Java 中的 String 类常用方法 Ⅱ

我喜欢Love

2015-04-22 15:03

 Scanner A=new Scanner(System.in);

  String B=A.next();

   if(B=="yes")

改成

 Scanner A=new Scanner(System.in);

  Int B=A.nextInt();

   if(B==1)

又可以啦,为什么???

写回答 关注

5回答

  • Absolute_Duo
    2015-04-26 15:57:33

    string类的变量中保存的是字符串的首地址,当用==运算时比较的是两个string变量的地址是否相等;

    当用equals比较的是string变量所指向的内容是否相等;

    比如String a="abc",b="abc"; 则a与b变量的地址是不相同的但其所指向的内容都是"abc"

    风吹阳光im...

    果然是大神啊

    2015-05-23 16:19:11

    共 1 条回复 >

  • 我喜欢Love
    2015-04-23 20:20:33

    String是一个类啊,不是基本数据类型,所以 String B=A.next();和 String B="yes";应该都是引用,我就是不明白为什么前者可以是用==,而后者不可以。。。。求大神回复啊!

  • 抖球鸟
    2015-04-22 22:20:17

    一个是基本类型,一个是对象的比较,==用于基本类型是可以的,不比较内存地址,只是值比较。

  • 我喜欢Love
    2015-04-22 15:59:26

      String B="yes";

       if(B=="yes")

    但是为什么改成这让又可以呢????你说String是引用才会造成以上的错误,这也是引用啊,却可以使用==比较

  • 康振宁
    2015-04-22 15:17:17

    因为你上面比较的是字符串型,是一个引用类型,而下面是整型数据,是一个基本类型,所以会这样,一般在Java中的比较字符串都是使用equals()方法来比较,当然equals也是需要重写的

    我喜欢Lov...

    String B="yes"; if(B=="yes") 但是为什么改成这让又可以呢????你说String是引用才会造成以上的错误,这也是引用啊,却可以使用==比较

    2015-04-22 16:00:38

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题