String str1 = "AA";
String str2 = "AA";
String str3 = new String("AA");
str1 == str2; true
str1.equals(str2); true
str1 == str3; false
str1.equals(str3); true
内存分布图

字符串常量池:所有字符串的值都存放在这里,字符串的引用都是去这里找,如果没有,则创建一个存在这里面,如果有则直接把值在常量池中所对应的地址给字符串的引用,这样能节省很多空间。
String str2 = "AA";
String str3 = new String("AA");
str1 == str2; true
str1.equals(str2); true
str1 == str3; false
str1.equals(str3); true
内存分布图
字符串常量池:所有字符串的值都存放在这里,字符串的引用都是去这里找,如果没有,则创建一个存在这里面,如果有则直接把值在常量池中所对应的地址给字符串的引用,这样能节省很多空间。