1.直接赋值与new 的区别
String str1=“Aaa”; String str2="Aaa";String str3 = new String ("Aaa");
其中str1与str2用相等判断为真,即指向相同的内存地址;
str1与str3用相等判断为假,指向了不同的内存地址;
理解如下:“Aaa”作为常量字符串,str1与str2均指向它的地址,故两者内存地址相同;
而str3通过new String 的方式,向内存中重新申请了一块内存地址空间,因此肯定与前两者不相等。
2.String中的内容是不能改变的
如果试图改变String的内容,就会产生一个新的实例,改变后的内容存在其返回值中返回,
而str本身的内容并不会改变。
如String str = “Aaa”; str.toLowerCase();
输出str,发现结果仍未Aaa,内容未改变;
只有通过str=str.toLowerCase();这种形式,将改变后的内容重新赋值给str,才能使其内容发生改变。