小编Mat*_*yeh的帖子

使用带有append方法的StringBuilder创建字符串时Java String intern方法的问题

    public static void main(String[] args) {
        String a = new StringBuilder("Jav").toString();
        a.intern();
        String c = "Jav";
        System.out.println(a == c);  //false
    }
Run Code Online (Sandbox Code Playgroud)
    public static void main(String[] args) {
        String a = new StringBuilder("Ja").append("v").toString();
        a.intern();
        String c = "Jav";
        System.out.println(a == c);  //true
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我不明白为什么第一个会打印出 false,但第二个会打印出 true。我认为这些应该打印出true,因为调用intern方法后,a的引用将被写入字符串池,而c将指向a的引用。有人可以解释其中的区别吗?谢谢!

我的JDK版本:OpenJDK 17.0.7

顺便说一句,我在使用 StringBuffer 时也得到了相同的结果。

java string

7
推荐指数
1
解决办法
290
查看次数

标签 统计

java ×1

string ×1