星垂璇野 2024-11-07 23:21 采纳率: 0%
浏览 3

Java字符串出现的奇怪问题

String a = "hello"; //创建 a对象
String b = "abc";//创建 b对象
String c = a + b;
String e = "helloabc";
System.out.println(c == e);

输出结果为false

修改为如下代码之后

String a = "hello"; //创建 a对象
String b = "abc";//创建 b对象
String c = a + b;
String d = c.intern();
String e = "helloabc";
System.out.println(c == e);

输出结果为true,为什么

  • 写回答

1条回答 默认 最新

  • threenewbee 2024-11-08 01:34
    关注

    应该是 String d = c.intern(); 这一句导致编译器在编译阶段对 a+b求值,使得c也指向了常量字符串helloabc

    评论

报告相同问题?

问题事件

  • 创建了问题 11月7日