SCJP題庫第210題

 
Given:
11. public class Person{
12.   private String name, comment;
13.   private int age;
14.   public Person(String n, int a, String c){
15.     name = n; age = a; comment = c;
16.   }
17.   public boolean equals(Object o){
18.     if (!(o instanceof Person)) return false;
19.     Person p = (Person)o;
20.     return age == p.age && name.equals(p.name);
21.   }
22. }
What is the appropriate definition of the hashCode method in class Person?
A. return super.hashCode();
B. return name.hashcode() + age * 7;
C. return name.hashCode() + comment.hashCode() / 2;
D. return name.hashCode() + comment.hashCode() / 2- age * 3;

Ans: D
解說:
此題原本的流傳的答案為D,但照Larry大大說此題答案應為B,我想B才是對的,理由是Person這個類別中有一個equals方法,此方法以類別中的name與age做為Person物件的equals比較,也就是說二個Person物件是否相等 視其name與age 二個成員資料而定,而hashCode做為一個物件的雜湊值計算應取 這2個成員資料來進行計算,也就是說,equals和hashCode二者 應 以相同的 資料 進行運算。

Comments

Larry Wu said…
應該為B

Popular posts from this blog

Android-使用webview在V3版的Google地圖GPS定位