不好意思这几天课程太紧了没来的即回复,至于第一步。首先String类型的数据是存放在常量池中的,也就是String类型数据是常量,比如String str = "a"+"b"; String str2 = "ab"; System.out.println(str==str2) 返回true,==比较的就是地址值,说明他们的地址是相同的。但是String str3 = str+"c";String str4 ="abc";System.out.println(str3==str4)返回值是false,说明地址值不一样,为什么会这样呢?这就和字符串的常量池优化有关,意思就是说第一种情况时在编译器就将a和b合并成常量相连的结果然后创建了一个指向ab值地址的字符串变量,而后一句其实就是再将ab的地址值给str2,。第二种情况并没有优化情况,简单点说就是创建了两个String对象,地址值当然也就不一样 |