Given the code fragment:



public static void main(String[] args) {
    StringBuilder sb = new StringBuilder(5);
    String s = "";

    if (sb.equals(s)) {
        System.out.println("Match 1");
    } else if (sb.toString().equals(s.toString())) {
        System.out.println("Match 2");
    } else {
        System.out.println("No Match");
    }
}

What is the result?

A.

Match 1

B.

Match 2

C.

No Match

D. A NullPointerException is thrown at runtime.

題解

程式第7行,判斷StringBuilder物件和字串物件邏輯上是否相等。它們是不同類型的物件,永遠不會相等。

程式第8行,判斷StringBuilder物件轉成字串後和字串物件邏輯上是否相等。它們都是空字串,因此相等,輸出「Match 2」。