為什么這里不能用==比較
?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)
又可以啦,為什么???
?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)
又可以啦,為什么???
2015-04-22
舉報(bào)
2015-04-26
string類(lèi)的變量中保存的是字符串的首地址,當(dāng)用==運(yùn)算時(shí)比較的是兩個(gè)string變量的地址是否相等;
當(dāng)用equals比較的是string變量所指向的內(nèi)容是否相等;
比如String a="abc",b="abc"; 則a與b變量的地址是不相同的但其所指向的內(nèi)容都是"abc"
2015-04-23
String是一個(gè)類(lèi)啊,不是基本數(shù)據(jù)類(lèi)型,所以?String B=A.next();和?String B="yes";應(yīng)該都是引用,我就是不明白為什么前者可以是用==,而后者不可以。。。。求大神回復(fù)?。?/p>
2015-04-22
一個(gè)是基本類(lèi)型,一個(gè)是對(duì)象的比較,==用于基本類(lèi)型是可以的,不比較內(nèi)存地址,只是值比較。
2015-04-22
? String B="yes";
? ?if(B=="yes")
但是為什么改成這讓又可以呢????你說(shuō)String是引用才會(huì)造成以上的錯(cuò)誤,這也是引用啊,卻可以使用==比較
2015-04-22
因?yàn)槟闵厦姹容^的是字符串型,是一個(gè)引用類(lèi)型,而下面是整型數(shù)據(jù),是一個(gè)基本類(lèi)型,所以會(huì)這樣,一般在Java中的比較字符串都是使用equals()方法來(lái)比較,當(dāng)然equals也是需要重寫(xiě)的