所有, 我遇到一个问题,当一个写下面一个关于Java字符串文字池中,并串的串联混乱
String hello = "Hello";
String str5 = "Hel" + "lo";
String str8 = "Hel";
String str9 = "lo";
String str10 = str8 + str9;
System.out.println("str10==hello?" + (str10 == hello));
System.out.println("str5==hello?" + (str5 == hello));
System.out.println("str10==str5?" + (str10 == str5));
然后我跑我的代码,并在控制台打印代码这个
str10 == hello ? false
str5 == hello ? true
str10 == str5 ? false
这使我困惑不已。为什么第二次打印TRUE但第一次打印FALSE? 在我理解的字符串文字池中,当定义一个字符串时,JVM将检查该池是否包含该字符串,如果没有,则将该字符串放入池中。
在我的代码,可变你好存在串池,” 直升机‘和’LO‘也是在游泳池,我的问题是
- 如果’直升机拼接的结果“和”lo“存在于池中。
- 关于str5和str10s的定义和它们为什么不是“==”有什么区别? ?不STR5和str10指有多种不同的“你好”,在字符串池(‘==’似乎意味着引用是同一个对象)
我的JDK版本:1.6.0_29
我IDE:IntelliJ IDEA的11.2
任何人都可以指出来非常感谢你
谢谢你!这对我很有帮助 – fuye 2013-03-15 10:58:51