string重写了equals,直接比较的两个对象是否一致,而==比较的是两个字符串的引用是否一致。
另外,直接写的字符串和new出来的字符串有很大的区别:
(1)String str1="hello";
String str2="hello";
String str3=new String("hello");
String str3=new String("hello");
System.out.println(str1==str2);
System.out.println(str3==str4);
输出:true和false
直接写的字符串是直接量,放在常量池中,如果下一次再写一个相同的字符串,会优先在常量池中寻找,所以本质上,两个“hello”是一样的。
而new出来的字符串就像new出的对象实例一样,str3和str4是两个不同的引用。
(2)之前的代码加上
System.out.println(str1.euqals(str2));
System.out.println(str3.euqals(str4));
输出都是true。