作者uopsdod (pcman)
看板java
標題[問題] OCJP SE6題目 - enum
時間Sun Feb 19 19:02:03 2017
Given:
enum Example {ONE, TWO, THREE}
Which statement is true?
A. The expressions (ONE == ONE) and ONE.equals(ONE) are both guaranteed to be
true.
B. The expression (ONE < TWO) is guaranteed to be true and ONE.compareTo(TWO)
is guaranteed to be less than one.
C. The Example values cannot be used in a raw java.util.HashMap; instead, the
programmer must use a java.util.EnumMap.
d. The Example values can be used in a java.util.SortedSet, but the set will
NOT be sorted because enumerated types do NOT implement java.lang.Comparable
------------------
The answer: A
想請問B,C,D是哪部分錯了, 這題不會得太多,實在沒有辦法做判斷。
A我倒是較能理解,因為ONE其實會是一個繼承Enum的類別,所以ONE==ONE物件記憶體位置
相同; ONE.equals(ONE), 我只知道System.out.println(Example.ONE); 會得到字串
ONE, 所以知道會對。
跟大家請教一下了,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.200.217.72
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1487502125.A.5A5.html
1F:→ ssccg: B <不能用、C可以啊、D有Comparable啊 02/20 00:28
2F:→ ssccg: enum在java只是syntax sugar,宣告決定name和ordinal 02/20 00:37
3F:→ ssccg: 大小用ordinal決定,其他部分跟一般物件沒什麼差別 02/20 00:37
4F:→ ssccg: 你有一點說錯,Example才是繼承Enum,ONE是個static field 02/20 00:39
修正錯字 java."util".SortedSet
※ 編輯: uopsdod (180.217.174.122), 02/20/2017 21:03:35
修正錯字 java.util.HashMap
※ 編輯: uopsdod (180.217.174.122), 02/20/2017 21:04:41
5F:→ uopsdod: 恩恩感謝糾正 02/20 21:05
6F:→ uopsdod: C我等等去查查看為什麼,還真不知道問的比較觀念是什麼 02/20 21:05
修正錯字 enum Example
※ 編輯: uopsdod (180.217.174.122), 02/20/2017 21:06:27
7F:→ uopsdod: 所以Enum其實也能給HashMap用,只是更適合給EnumMap! 02/20 21:14
8F:→ uopsdod: 感謝 了解了 02/20 21:14
9F:→ adrianshum: 你後面的解釋差不多全錯 02/23 09:36
10F:→ uopsdod: 求指教 感謝感謝 02/25 06:38
11F:→ adrianshum: ONE 不是一個類別,所以ONE==ONE 相等的原因不對 03/01 19:11
12F:→ adrianshum: equals 的原因也與「字串ONE」一點關係也沒有。單純是 03/01 19:15
13F:→ adrianshum: 因為Enum 的equals 是單純以== 作比較而已。順帶一提 03/01 19:15
14F:→ adrianshum: ,正常的equals 在==(指向同一instance) 的情況下也 03/01 19:15
15F:→ adrianshum: 該return true,既然上面你知道== 會對,意味equals() 03/01 19:15
16F:→ adrianshum: 也一定對啦 03/01 19:15