滑小小稽 2019-07-06 14:58 采纳率: 0%
浏览 287

有关String内存分配问题

public static void main(String[] args) {

    String str = "Hello,World!";
    String s1 = "Hello,";
    String s2 = "World!";

    String s = "Hello," + "World!";

    String str2 = s1 + s2;

    System.out.println(str2 == str);
    System.out.println(s == str);
    System.out.println(str2 == s);
    System.out.println(s1 == "Hello,");
}

运行结果:
false 
true 
false
true

有人能解释下,s 与 str2 的内存分配情况吗?

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-07-06 15:53
    关注

    str s1 s2 s 以及最后那个 "Hello," 都是常量,如果两个常量的字面值一样,在存储上实际上只有一份。
    而str2不是常量,是程序运行的时候计算出来的,所以它参与的比较都是false

    评论

报告相同问题?