Given:



public class Equal {

    public static void main(String[] args) {
        String str1 = "Java";
        String[] str2 = {"J", "a", "v", "a"};
        String str3 = "";
        for (String str : str2) {
            str3 = str3 + str;
        }
        boolean b1 = (str1 == str3);
        boolean b2 = (str1.equals(str3));
        System.out.print(b1 + ", " + b2);
    }
}

What is the result?

A.

true, false

B.

false, true

C.

true, true

D.

false, false

題解

程式執行到第10行時,str1和str3變數所參考到的都是「Java」字串物件,只是是不同的字串物件。因此第10行判斷參考是否相同的「==」運算子,會得到false的結果。而第11行判斷邏輯是否相同的「equals」方法會得到true的結果。