作者clplusegg ()
看板java
标题[问题] String 老问题...
时间Mon Jul 15 23:36:58 2013
不好意思,最近刚在学习JAVA,看到良葛格提到的immutable string,
原本看完还是不太懂,爬过板上文章後,从良葛格提供的code改了一小段去验证自己
想的对不对。如下:
public class StringIntern {
public static void main(String[] args) {
String str1 = "fly";
String str2 = "flyweight";
String str3 = str1 + "weight";
System.out.println(str3 == str2);
}
}
答案会是false,我想问的是在str3的地方,是因为str1不会在编译时期被compiler视为
"fly",所以str3要指向的值在string pool里面没捞到,导致最後答案是false?
还是其实str3也会被create成一个object?
麻烦板上各位前辈解惑! 谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.250.171.73
1F:→ tsungchic:比较方式不对,请用str3.equals(str2) 07/16 00:04
2F:→ tsungchic:"=="是指两个变数是否指向相同物件实体,当然是false 07/16 00:08
3F:→ tkcn:你要不要先做 str3="str"+"weight" 的测试,然後推论看看呢? 07/16 00:12
4F:→ tkcn: 打错 "fly" 07/16 00:14
5F:推 LonelyLouis:同楼上 因为str3 与 str2 是不同的物件 当然是false 07/16 01:01
6F:→ coolcomm:"fly"+"weight"好像会在编译时期被处理 所以str2==str3 07/16 10:29