1.用双引号创建
2.用new String方式创建
3.双引号相加创建
4.两个new String相加时
5.两个引用相加时
6.双引号加new String创建或者new String加双引号创建
6.通过 new StringBuilder.toString()或者new StringBuilder().append().toString()创建
总结:
1.只在常量池上创建常量
第一种方式
第二种方式.
2.只在堆上创建对象(指的是AA)
第一种:
String a2 = new String("A") + new String("A");
第二种:
3.在堆上创建对象,在常量池上创建常量
附加:public String intern()
判断一个字符串是否在常量池
一个初始时为空的字符串池,它由类 String 私有地维护。
当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。