Java 字符串池中的对象数
以下代码段在运行时在字符串池中生成了多少个字符串对象:Java 字符串池中的对象数,java,string,jvm,Java,String,Jvm,以下代码段在运行时在字符串池中生成了多少个字符串对象: public class Test { public static void main(String[] args) { String string = new String("abc"); System.out.println("abc" == "def"); } } 第二行是否为def生成字符串对象?还是由于编译器优化而被忽略?字节码如下所示: public static
public class Test {
public static void main(String[] args) {
String string = new String("abc");
System.out.println("abc" == "def");
}
}
第二行是否为
def
生成字符串对象?还是由于编译器优化而被忽略?字节码如下所示:
public static void main(java.lang.String[] args) {
/* L7 */
0 new 2;
3 dup;
4 ldc 3; /* "abc" */
6 invokespecial 4; /* java.lang.String(java.lang.String autumn) */
9 astore_1; /* autumn */
/* L8 */
10 getstatic 5; /* java.lang.System.out */
13 iconst_0;
14 invokevirtual 6; /* void println(boolean arg0) */
/* L10 */
17 return;
}
所以,我想说,只生成了一个字符串。“def”存储在常量池中。java.lang.String?