字符串常量池:是指.java编译的时候已经被确定,并且被保存在编译好的.class文件中
1、String str = "strHello";
String str1="strHello";
String str2 = "str"+"Hello";
str==str——true
str1==str2——true
解析: 字符串常量池就像一个池子,确保在池子中一个字符串常量只有一个拷贝,对于str1来说,在池子中已经有"strHello",java就不会再创建实例,会把str1直接引用到“strHello”,所以str和str1的引用地址相同,当一个字符串常量由多个字符串常量组成,它也是字符串常量,所以2个都是true
2、String str = "strHello";
String str2 = new String("strHello");
str==str2——false
解析:str还是字符串常量,编译的时候已经确定,str2无法再编译期间被确定,所以是运行时创建的新对象str2的引用
3、String str = new String("strHello");
String str2 = new String("strHello");
str==str2——false