看板 java 關於我們 聯絡資訊
※ 引述《Nozaki (NA)》之銘言: : 三個很基本的語法問題一直很困惑我...請大家解惑一下 感謝orz : List set =new ArrayList();->為什麼不用ArrayList set=new ArrayList();就好? 兩種方法其實都是正確的, 只是說用不到一些比較特別method時, 比較不建議去把前面interface給寫死。 : set.add(new Integer(3));->為什麼不用set.add(3);就好? new Integer(3)是Object 直接用3是Primitive list是存取object的,用primitive type丟進去裡面 它也會自動轉成object後再存進去 因此其實是同一種意思 (感謝uziel指正) : Iterator it =set iterator();->為什麼建立一個iterator的物件是這樣寫 : 而不是一般的 iterator it=new iterator();阿? 我想上面應該打錯了,是set.iterator() 你有動手試的話會發現Iterator是一個interface,不是物件。 所以當然不能單純地 new Iterator()就拿來用 要使用interface必需要用實作過的, 以上面舉的例子來講, list set是一個 ArrayList ArrayList也是繼承/實作一堆東西,其中有一項interface叫Collection Collection又繼承Iterable Iterable這個interface, 裡面定義了所有使用這個interface的人都要實作一個iterator出來 因此 Iterator it = set.iterator() 這個意思是指使用set這個list實作出來的iterator object 最後, List就叫list就好,叫什麼set 害我寫set是一個ArrayList都覺得怪怪的 qq -- We who cut mere stones must always be envisioning cathedrals. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.35.186.241 ※ 編輯: awert 來自: 114.35.186.241 (06/06 10:49)
uziel:ArrayList 內部只能存物件,所以基本型別資料要先包成物件 06/06 11:11
awert:其實丟primitive進去它會自動轉成object型態 06/06 11:21
awert:所以我上面講的"這要看這個list是要做什麼用的"其實是錯的 06/06 11:23
※ 編輯: awert 來自: 114.35.186.241 (06/06 11:26)
awert:y 06/06 11:26
uziel:補充:autoboxing/unboxing 是 Java 1.5 以後才有的功能 06/06 11:28
Nozaki:解說真詳細!感謝 希望隨著寫越多可以越來越懂orz 06/07 15:43
Gway:覺得兩位講解的很棒 推一下 解決我一些觀念上的迷失 06/08 10:50
CIHM:正解0-0 06/10 22:46