五分三十七秒那句理解不了
老師說:判斷兩個引用的值是否相等,比較的也是地址。
但是看如下代碼:
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("兩個值相同");
????else?
????????System.out.println("兩個值不同");
}
}
為什么我這輸出的是:兩個值相同。
請各路大神解一解
2019-10-08
?if(a.num==a2.num2)應該改成
?if(a==a2)
a.屬性就是值了。而你a雖然給了值,a==a2不是比較值,還是地址
2019-10-08
復雜點的說的話
你在創(chuàng)建一個字符串屬性或者變量是會先在內存中的常量池中去尋找是否有你要創(chuàng)建的字符串(是否查找也和字符串創(chuàng)建方式有關)如果有就不會再創(chuàng)建了,所以你使用equals 比較字符串時 只要比較地址就可以知道是否值是相等的了??
2019-10-08
== 比較的時對象的值
equals比較的是對象的地址