Given:



public class Product {
    int id;
    String name;
    public Product(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

And given the code fragment:

public static void main(String[] args) {
    Product p1 = new Product(101, "Pen");
    Product p2 = new Product(101, "Pen");
    Product p3 = p1;
    boolean ans1 = p1 == p2;
    boolean ans2 = p1.name.equals(p2.name);
    System.out.print(ans1 + ":" + ans2);
}

What is the result?

A.

true:true

B.

true:false

C.

false:true

D.

false:false

題解

程式第15行的ans1值,是用「==」運算子來判斷p1和p2所儲存的物件參考是否相同,由於這兩者是不同的物件,因此會是false。

程式第16行的ans2值,是用每個物件都有的「equals」方法來判斷p1和p2的「name」物件變數是否在邏輯上是一樣的,由於p1和p2的「name」變數所參考到的字串皆為「Pen」,因此會是true。