SCJP 1.6版考題 190

出自 陳富國維基館
於 2013年3月30日 (六) 00:24 由 Ikk (對話 | 貢獻) 所做的修訂 (新頁面: Given: 1. import java.util.*; 2. public class WrappedString{ 3. private String s; 4. public WrappedString(String s){this.s = s;} 5. public static void main(String[] args){ ...)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
前往: 導覽搜尋
Given:
1. import java.util.*;
2. public class WrappedString{
3.   private String s;
4.   public WrappedString(String s){this.s = s;}
5.   public static void main(String[] args){
6.      HashSet<Object> hs = new HashSet<Object>();
7.      WrappedString ws1 = new WrappedString("aardvark");
8.     WrappedString ws2 = new WrappedString("aardvark");
9.     String s1 = new String("aardvark");
10.    String s2 = new String("aardvark");
11.    hs.add(ws1); hs.add(ws2); hs.add(s1); hs.add(s2);
12.    System.out.println(hs.size()); }}

What is the result?
 A. 0
 B. 1
 C. 2
 D. 3
 E. 4
 F. Compilation fails.
 G. An exception is thrown at runtime.

解答


Ans: D

解說:

 hs物件有3個
 ws1、ws2與s1(s2)
 s1與s2為String,比較時一樣,所以不會重複加入hs
 ws1與ws2因WrappedString類別並未定義hashCode與equals方法,無法比較 (會先比較hashCode()方法傳回的值是否相同,
 如果相同,則再使用 equals()方法比較,如果兩者都相同,則視為相同的物件。)