作者hsuyungw (棄劍封刀)
看板java
標題Re: [問題] string判定相等
時間Sat Jun 12 17:56:16 2010
※ 引述《thnestar (峰)》之銘言:
: ※ 引述《travellu (旅行)》之銘言:
: : ^^^^^^^^^^^^^^^^
: : 改成if(s3[0].equals(s4))
: : == 和 .equals 用法是不一樣的
: : 一個會比較到變數在記憶體中的位址
: : 一個只會比較變數的內容
: 所以以這種情況來看,
: 用equals是比較內容,而==是比較位置,
: 那為什麼我用
: String s1 = "HI";
: String s2 = "HI";
: 的時候,s1==s2是true呢?
: 兩者應該是不同位置才對。
: 還是說因為s3是個String的陣列,
: 所以跟s1、s2的情況不太一樣呢?
這是JAVA1.4後的新特性String pool
用String s1 = "Hi";宣告的字串會被放入String pool內
所以當內容相同時記憶體參考位置是一樣的,==判斷會回傳true
如果是用
String s1 = new String("Hi");
String s2 = new String("Hi");
這樣會在Heap中截取一區塊放置String
此時用==比較會回傳false
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.94.245
→ sbrhsieh:string pool 不是 1.4 後的新特性。 06/12 20:55
→ hsuyungw:那我記錯了,應該是更早期的版本~ 06/13 01:11