我喜欢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)
又可以啦,为什么???
string类的变量中保存的是字符串的首地址,当用==运算时比较的是两个string变量的地址是否相等;
当用equals比较的是string变量所指向的内容是否相等;
比如String a="abc",b="abc"; 则a与b变量的地址是不相同的但其所指向的内容都是"abc"
String是一个类啊,不是基本数据类型,所以 String B=A.next();和 String B="yes";应该都是引用,我就是不明白为什么前者可以是用==,而后者不可以。。。。求大神回复啊!
一个是基本类型,一个是对象的比较,==用于基本类型是可以的,不比较内存地址,只是值比较。
String B="yes";
if(B=="yes")
但是为什么改成这让又可以呢????你说String是引用才会造成以上的错误,这也是引用啊,却可以使用==比较
因为你上面比较的是字符串型,是一个引用类型,而下面是整型数据,是一个基本类型,所以会这样,一般在Java中的比较字符串都是使用equals()方法来比较,当然equals也是需要重写的
Java入门第三季
409792 学习 · 4340 问题
相似问题