今天期末考试看到一个题,发现了以前自己对于 == 和equals的认识还是有一定的不足,下面是这道题
public class A {
public static void main(String[] args) {
String s1 = "shuangti";
String s2 = "shuang" + "ti";
boolean b1 = s1.equals(s2);
boolean b2 = s1 ==s2;
System.out.println(b1 + " " + b2);
}
}
我以前的想法是equals比较的是两个字符串的数值,==比较的是两个字符串的地址.所以我以为是true false,但是最终结果是true true。后来查阅资料才知道当==先去查找常量池中是否有“shuangti”这个字符串,如果有就不生成新的,没有的话就生成新的。所以最后得到还是一样的。