为了账号安全,请及时绑定邮箱和手机立即绑定

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

 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 回答

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

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

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

0 回复 有任何疑惑可以回复我~
#1

风吹阳光imooc

果然是大神啊
2015-05-23 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

  String B="yes";

   if(B=="yes")

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

我喜欢Love 提问者

String B="yes"; if(B=="yes") 但是为什么改成这让又可以呢????你说String是引用才会造成以上的错误,这也是引用啊,却可以使用==比较
2015-04-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信