[英]Java string pool test doesn't work
在閱讀了有關Java字符串池的信息后,我決定進行一些測試。 我編寫了以下測試程序,根據JDK規范,其結果與Java String Pool行為不匹配。
public class Temp_20141220 {
private String b1 = "hello";
public static void main(String[] args) {
Temp_20141220 t = new Temp_20141220();
String b = "hello";
System.out.println("b==b1 =" + t.b1 == b);
}
}
我一直期望得到輸出:b == b1 = true,但我得到:b == b1 = false
為什么這樣? Ubuntu的JVM不支持此Java字符串池功能嗎?
這個
System.out.println("b==b1 =" + t.b1 == b);
相當於
System.out.println( ("b==b1 =" + t.b1) == b);
您將在b
與"b==b1 ="
和t.b1
的串聯之間應用引用相等。
您正在比較2個不同的字符串:
"b==b1 =" + t.b1
如果將代碼更改為:
System.out.println("b==b1 =" + (t.b1 == b));
您將在輸出中實現真實
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.