gpt4 book ai didi

java - JVM如何重用interned String子串?

转载 作者:IT老高 更新时间:2023-10-28 21:01:00 25 4
gpt4 key购买 nike

我知道如果你做

for (condition) {
String s = "hi there";
}

在所有迭代中只创建一个 String 实例,不像 String s = new String("hi there"); 将在每次迭代中创建一个新实例.

但是,阅读 Joshua Bloch 的 Effective Java:第 2 章第 5 项(第 20 页)它指出:

Furthermore, it is guaranteed that the object will be reused by any other code running in the same virtual machine that happens to contain the same string literal [JLS, 3.10.5].

不说的AFAIK恰好相同的字符串文字,它说包含

阅读 [JLS, 3.10.5]找不到对此的任何确切引用,我对此表示怀疑。

给出这个片段:

String s1 = "hi ";
String s2 = "there";
String s3 = "hi there";

创建了多少个实例?

  • 3 个实例(因此,短语并不准确)。
  • 2 个实例,s1s2(然后 s3 是使用 s1s2< 创建的 引用)

最佳答案

JLS 不保证任何子字符串的重用。这里的“包含”只是意味着 class 在某处提到了完全相同的字符串文字。它在“子串”的意义上使用。

关于java - JVM如何重用interned String子串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38395254/

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