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