[問題] OCJP SE6題目 - enum

看板java作者 (pcman)時間8年前 (2017/02/19 19:02), 8年前編輯推噓0(0016)
留言16則, 3人參與, 最新討論串1/2 (看更多)
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://www.ptt.cc/bbs/java/M.1487502125.A.5A5.html

02/20 00:28, , 1F
B <不能用、C可以啊、D有Comparable啊
02/20 00:28, 1F

02/20 00:37, , 2F
enum在java只是syntax sugar,宣告決定name和ordinal
02/20 00:37, 2F

02/20 00:37, , 3F
大小用ordinal決定,其他部分跟一般物件沒什麼差別
02/20 00:37, 3F

02/20 00:39, , 4F
你有一點說錯,Example才是繼承Enum,ONE是個static field
02/20 00:39, 4F
修正錯字 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

02/20 21:05, , 5F
恩恩感謝糾正
02/20 21:05, 5F

02/20 21:05, , 6F
C我等等去查查看為什麼,還真不知道問的比較觀念是什麼
02/20 21:05, 6F
修正錯字 enum Example ※ 編輯: uopsdod (180.217.174.122), 02/20/2017 21:06:27

02/20 21:14, , 7F
所以Enum其實也能給HashMap用,只是更適合給EnumMap!
02/20 21:14, 7F

02/20 21:14, , 8F
感謝 了解了
02/20 21:14, 8F

02/23 09:36, , 9F
你後面的解釋差不多全錯
02/23 09:36, 9F

02/25 06:38, , 10F
求指教 感謝感謝
02/25 06:38, 10F

03/01 19:11, , 11F
ONE 不是一個類別,所以ONE==ONE 相等的原因不對
03/01 19:11, 11F

03/01 19:15, , 12F
equals 的原因也與「字串ONE」一點關係也沒有。單純是
03/01 19:15, 12F

03/01 19:15, , 13F
因為Enum 的equals 是單純以== 作比較而已。順帶一提
03/01 19:15, 13F

03/01 19:15, , 14F
,正常的equals 在==(指向同一instance) 的情況下也
03/01 19:15, 14F

03/01 19:15, , 15F
該return true,既然上面你知道== 會對,意味equals()
03/01 19:15, 15F

03/01 19:15, , 16F
也一定對啦
03/01 19:15, 16F
文章代碼(AID): #1OgNijMb (java)
文章代碼(AID): #1OgNijMb (java)