Re: [問題] string判定相等
※ 引述《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
06/12 20:55, 1F
→
06/13 01:11, , 2F
06/13 01:11, 2F
討論串 (同標題文章)