Java 字符串池测试不起作用

标签 java string pool

在阅读了有关 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 String Pool 特性吗?

最佳答案

这个

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

相当于

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

您在 b"b==b1 ="t.b1 的串联之间应用引用相等性。

关于Java 字符串池测试不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27680346/

相关文章:

java - 泳池什么时候换?

python - 带有嵌套网络请求的 Gevent 池

python - 如何使异步池可取消?

java - NSCoding 到 java

java - MultiPartEntityBuilder 无法解析为类型

Javascript 对象无法与 native javascript 方法(如 match()、替换等)一起使用

javascript - 查找字符串 b 中较小字符串 s 的所有排列(JavaScript)

python - 检查 python 字符串格式?

java - 实现注册类

Java BPM 套件 - 与 .Net 的互操作性