作者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
1F:→ sbrhsieh:string pool 不是 1.4 後的新特性。 06/12 20:55
2F:→ hsuyungw:那我记错了,应该是更早期的版本~ 06/13 01:11