所有, 我遇到一個問題,當一個寫下面一個關於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