foo*_*foo 12 java string literals
以下两段代码是否相同?
String foo = "foo";
String foo = new String("foo").intern();
Run Code Online (Sandbox Code Playgroud)
T.J*_*der 15
它们具有相同的最终结果,但它们不相同(它们将产生不同的字节码; new String("foo").intern()版本实际上经过这些步骤,产生一个新的字符串对象,然后实习它).
两个相关的引用来自String#intern:
当
intern被调用的方法,如果池已经包含一个字符串等于该String由测定对象equals(Object)的方法,然后从池中字符串被返回.否则,将此String对象添加到池中,并String返回对此对象的引用.所有文字字符串和字符串值常量表达式都是实体.
所以最终结果是相同的:引用实习字符串"foo"的变量.
| 归档时间: |
|
| 查看次数: |
4696 次 |
| 最近记录: |