簡體   English   中英

Java字符串池測試不起作用

[英]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個不同的字符串:

  1. 字符串是"b==b1 =" + t.b1
  2. 字符串是b

如果將代碼更改為:

System.out.println("b==b1 =" + (t.b1 == b));

您將在輸出中實現真實

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM