Re: [問題] string判定相等

看板java作者 (棄劍封刀)時間14年前 (2010/06/12 17:56), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串4/5 (看更多)
※ 引述《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

06/12 20:55, , 1F
string pool 不是 1.4 後的新特性。
06/12 20:55, 1F

06/13 01:11, , 2F
那我記錯了,應該是更早期的版本~
06/13 01:11, 2F
文章代碼(AID): #1C4rd3ph (java)
文章代碼(AID): #1C4rd3ph (java)