Bootstrap

各种方式创建String及其在jvm中的创建情况

1.只在常量池上创建常量
    String a1 = "AA";
1
2.只在堆上创建对象
    String a2 = new String("A") + new String("A");
1
3.在堆上创建对象,在常量池上创建常量
    String a3 = new String("AA");
1
4.在堆上创建对象,在常量池上创建引用
    String a4 = new String("A") + new String("A");//只在堆上创建对象AA
    a4.intern();//将该对象AA的引用保存到常量池上
1
2
5.在堆上创建对象,在常量池上创建常量,在常量池上创建引用(不可能)
    String a5 = new String("A") + new String("A");//只在堆上创建对象
    a5.intern();//在常量池上创建引用
    String a6 = "AA";//此时不会再在常量池上创建常量AA,而是将a5的引用返回给a6
    System.out.println(a5 == a6); //true

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;