黑马程序员技术交流社区
标题:
又一个常量池问题:关于String.intern()
[打印本页]
作者:
Synaric
时间:
2015-10-4 10:15
标题:
又一个常量池问题:关于String.intern()
先写一个很简单的程序
public class StringDemo5 {
public static void main(String[] args) {
String s = new String("gh");
}
}
复制代码
反编译后节选:
public static void main(java.lang.String[]);
Code:
0: new #2 // class java/lang/String
3: dup
4: ldc #3 // String gh
6: invokespecial #4 // Method java/lang/String."<init>":(Ljava/lang/String;)V
9: astore_1
10: return
}
复制代码
我查到ldc是将int, float或String型常量值从常量池中推送至栈顶。也就是说,一个String被创建的时候,其字面量"gh"已经存在于常量池中。
intern()方法:若字符串的字面量不在常量池中,就在常量池中创建字面量并返回其引用。
我很疑惑,怎样的情况下,一个String的字面量不在常量池中?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2