存储在字符串池中的String lliterals是唯一的吗?

Oh *_*oon 1 java string jls

我知道Strings可能会被实习,但它是一个在创建新的字符串对象时虔诚地执行的动作?

Jls section 3.10.5 string literals.

eri*_*son 7

所有String 文字都进入字符串池.否则,你的应用程序必须调用intern()String,否则将无法进入游泳池.

一个String文字是出现在与双引号括起来的源代码的字符串:

String greeting = "Hello, ";
String s = greeting + name;
Run Code Online (Sandbox Code Playgroud)

在此示例中,"Hello, "是一个文字字符串.它在实习池中.它也由变量引用greeting.

String提到了s是不是文字,而不是实习生池......除非你做这个调用:

s = s.intern();
Run Code Online (Sandbox Code Playgroud)