五分三十七秒那句理解不了
老師說:判斷兩個(gè)引用的值是否相等,比較的也是地址。
但是看如下代碼:
public class A{
????private int num=1;
????private int num2=1;
?????public static void main (String[]args){
????????A a=new A();
????????A a2=new A();
????if(a.num==a2.num2)
????????System.out.println("兩個(gè)值相同");
????else?
????????System.out.println("兩個(gè)值不同");
}
}
為什么我這輸出的是:兩個(gè)值相同。
請(qǐng)各路大神解一解
2019-10-08
?if(a.num==a2.num2)應(yīng)該改成
?if(a==a2)
a.屬性就是值了。而你a雖然給了值,a==a2不是比較值,還是地址
2019-10-08
復(fù)雜點(diǎn)的說的話
你在創(chuàng)建一個(gè)字符串屬性或者變量是會(huì)先在內(nèi)存中的常量池中去尋找是否有你要?jiǎng)?chuàng)建的字符串(是否查找也和字符串創(chuàng)建方式有關(guān))如果有就不會(huì)再創(chuàng)建了,所以你使用equals 比較字符串時(shí) 只要比較地址就可以知道是否值是相等的了??
2019-10-08
== 比較的時(shí)對(duì)象的值
equals比較的是對(duì)象的地址