gpt4 book ai didi

java - 如果我们更改字符串值,字符串池如何管理引用?

转载 作者:行者123 更新时间:2023-12-02 09:03:08 25 4
gpt4 key购买 nike

如果我们有一个 String s = "Hello"它将在字符串池中创建字符串 "Hello"并且一些引用指向字符串 s 如果我更改 s="World"会怎样。在字符串池中它将创建新的 String "World”,现在我的引用指向 World。 “Hello”字符串会发生什么?

最佳答案

来自documentation of String :

... String objects are immutable ...

String - 编译时已知的常量也会被特殊处理。它们存储在常量池中。所有“相等”的编译时 String 常量引用相同的 String 对象。这就是原因

String s1 = "Hello";
String s2 = "Hello";
System.out.println(s1 == s2);

将打印true。还有一些其他有趣的例子。我写了一个Ideone example a while back这展示了一些有趣的案例。

当对某个非基本类型变量s重新赋值时,旧对象仍然存在于堆上(只要垃圾收集器认为它不符合收集条件)。改变的是变量 s 的引用位置。在所呈现的情况下,在编译时创建第二个 String 常量,然后 s 引用第二个常量。

关于java - 如果我们更改字符串值,字符串池如何管理引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60020769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com