zoukankan      html  css  js  c++  java
  • JVM学习分享-思考题

    package zero.desk.stringconstantpool;

    import org.junit.Test;

    /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 当调用intern方法时,
    * 如果池已经包含此字符串(equals确定),则返回池中字符串。
    * 否则,将此String对象添加到池中并且返回该String对象的引用。
    */
    public class StringConstantPool_Intern {

    @Test
    public void test1() {
    String a1 = "AA";//当调用intern方法时,如果池已经包含此字符串(equals确定),则返回池中字符串。否则,将此String对象添加到池中并且返回该String对象的引用。
    a1.intern();
    }
    }

    package zero.desk.stringconstantpool;

    import org.junit.Test;

    /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * /Users/zero/Code/Myself/Project/zero-Project/jvm/target/classes/zero/desk/stringconstantpool
    * javap -verbose StringConstantPoolAA
    * cd ../stringconstantpool
    */
    public class StringConstantPoolAA {

    @Test
    public void test1() {
    String a1 = "AA";//在常量池上创建常量AA
    String a2 = "AA";//直接返回已经存在的常量AA
    System.out.println(a1 == a2); //true
    }

    }

    package zero.desk.stringconstantpool;

    import org.junit.Test;

    /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolAAAA {

    @Test
    public void test1() {
    String a1 = new String("AA");//在堆上创建常量AA
    String a11 = a1.intern();
    String a2 = "AA";//在常量池上创建常量AA
    System.out.println(a1 == a2); //false
    System.out.println(a1 == a11); //false
    System.out.println(a11 == a2); //true
    }

    }

    package zero.desk.stringconstantpool;

    import org.junit.Test;

    /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolAABB {

    @Test
    public void test1() {
    String a1 = "AA"+"BB";//在常量池上创建常量AABB
    String a2 = "AABB";//在常量池上创建常量AABB
    System.out.println(a1 == a2); //true
    }

    }

    package zero.desk.stringconstantpool;

    import org.junit.Test;

    /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolNAA {

    @Test
    public void test1() {
    String a1 = "AA";//在常量池上创建常量AA
    String a2 = new String("AA");//在堆上创建对象AA
    String a3 = a2.intern();//常量池上存在常量AA,直接返回常量池上常量AA,即a1
    System.out.println(a1 == a2); //false
    System.out.println(a1 == a3); //true
    System.out.println(a2 == a3); //false
    System.out.println(System.identityHashCode(a1));
    System.out.println(System.identityHashCode(a2));
    }

    }

    package zero.desk.stringconstantpool;

    import org.junit.Test;

    /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolNAABB {

    @Test
    public void test1() {
    String a3 = "AA"+new String("BB"); //在堆上创建对象AABB
    // String a33 = a3.intern();
    String a333 = "AABB";//在常量池上创建常量AABB
    System.out.println(a333 == a3); //false
    //
    System.out.println(System.identityHashCode(a3));
    System.out.println(System.identityHashCode(a333));
    }
    }

    package zero.desk.stringconstantpool;

    import org.junit.Test;

    /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolNAABBi {

    @Test
    public void test1() {
    String a3 = "AA"+new String("BB"); //在常量池上创建常量AABB
    String a33 = a3.intern();
    String a333 = "AABB";//在常量池上创建常量AABB
    System.out.println(a333 == a3); //true
    //
    System.out.println(System.identityHashCode(a3));
    System.out.println(System.identityHashCode(a33));
    System.out.println(System.identityHashCode(a333));
    }
    }

    package zero.desk.stringconstantpool;

    import org.junit.Test;

    /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolNAANBB {

    @Test
    public void test1() {
    String a3 = new String("AA")+new String("BB"); //在堆上创建对象AABB
    // String a33 = a3.intern();
    String a333 = "AABB";//在常量池上创建常量AABB
    System.out.println(a333 == a3); //false
    //
    System.out.println(System.identityHashCode(a3));
    System.out.println(System.identityHashCode(a333));
    }
    }

    package zero.desk.stringconstantpool;

    import org.junit.Test;

    /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolNAANBBi {

    @Test
    public void test1() {
    String a3 = new String("AA")+new String("BB"); //在常量池上创建常量AABB
    String a33 = a3.intern();
    String a333 = "AABB";//在常量池上创建常量AABB
    System.out.println(a333 == a3); //true
    //
    System.out.println(System.identityHashCode(a3));
    System.out.println(System.identityHashCode(a33));
    System.out.println(System.identityHashCode(a333));
    }
    }
  • 相关阅读:
    如何自定义一个通信协议
    c++ 如何编写接口类(interface)
    QT国际化(中英转换)
    QT中文乱码与国际化支持
    frp官方中文文档
    K3 LEDE固件更改FRP客户端版本
    Linux下的tar压缩解压缩命令详解
    QT入门系列(3):控制台输出QString
    Delphi、Lazarus保留字、关键字详解
    使用TortoiseSVN的客户端钩子脚本触发Jenkins构建
  • 原文地址:https://www.cnblogs.com/DeskZero/p/11538147.html
Copyright © 2011-2022 走看看