【问题标题】:Number of objects in string pool [duplicate]字符串池中的对象数[重复]
【发布时间】:2015-05-04 13:51:35
【问题描述】:

以下代码sn-p运行时在字符串池中生成了多少个字符串对象:

public class Test {
    public static void main(String[] args) {
       String string = new String("abc");      
       System.out.println("abc" == "def");  
   }
}

第二行是否为def 生成字符串对象?还是因为编译器优化而忽略了?

【问题讨论】:

    标签: java string jvm


    【解决方案1】:

    字节码如下:

      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 秋天?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 2013-10-25
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多