今天期末考試看到一個題,發現了以前自己對於 == 和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”這個字符串,如果有就不生成新的,沒有的話就生成新的。所以最後得到還是一樣的。