JAVA中==與equals方法的比較
在JAVA中,雙等號(==)和equals()方法應用于兩個字串比較時,所比較的內容是有差別的,==比較的是兩個字串物件在記憶體中的地址,就是判斷是否是同一個字串物件,而equals()方法比較的是兩個字串物件的值,
在字串型別物件創建的時候,當使用
String str1="hello" 時
字串默認存盤在堆疊的緩沖池中,假設地址為0X01
String str2="hello"時,
str2會到緩沖池中去找是否有“hello"這個詞,如果有這個詞,就會把"hello"這個詞的地址(即0x01)直接賦給str2,所以str1和str2的地址是一樣的,這時
str1==str2的回傳值為true.
如果:
String str3=new String ("hello");
String str4=new String ("hello");
用這種帶new的創建方式,默認存盤在堆中,并開辟空間賦值, 每new一個物件便開辟一個新的空間,故str3和str4的地址不同,所以
str3==str4的回傳值為true.
那么,
str1==str2的結果呢?
一個存盤在堆疊的緩沖池的,一個存盤在堆中,所以是不同的兩個地址,當然回傳值為false,
綜上:兩個非new的回傳true,兩個new的回傳false,一個new 一個非new回傳false,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237157.html
標籤:其他
上一篇:EWT中為什么使用貝塞爾函式(bessel)初始化高斯核?
下一篇:C語言 | 統計投票的結果
