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?