Re: [問題] 物件陣列的new問題

看板java作者 (沉默是金)時間17年前 (2008/11/24 20:10), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《gech2001 (gech)》之銘言: public static Map<String,String>[] transMap = new HashMap<String,String>[82671](); 可是我看這種宣告不能用(不能編譯) 爬文看到物件陣列要用迴圈跟new去初使化的

11/23 15:29,
你誤會了new HashMap[size];跟 new HashMap() 的差異.
11/23 15:29

11/24 15:37,
有什麼樣的差別呢?
11/24 15:37
其實有好一陣子沒什麼動力出來講話了 , 工作太忙 , 另一方面是覺得這種基本問題應該有資源可以找的 , 基本上應該任何一本講陣列的書都會帶到, 不過想想還是講一下好了 , 不然開了頭沒講尾好像不太好... ----廢話結束---- 所謂的 Object[] o = new Object[10]; //Object可代換任意Class 指的是說 , 我配置一個長度為10的Object陣列. 那, o[0] o[1] ... o[9] 等物件的內容是什麼? 很顯然我並沒有指派給它 , 所以它就會是 null. 你的困惑應該是在於 , 為什麼我會說「沒有指派給它」 , 因為畢竟有new 也有Class name , 跟 new Object() 其實是很像的. ------ 但回過頭來想想 , Object[] o =new Object[10]; 等於 配置10 個 new Object() 給 o 時 , 會有什麼麻煩 ? 這樣會不會造成資源的浪費呢? (有可能我只是想拿來存放我已經存在某些物件裡面的資料.) 又如果 我今天是 Object[] o =new Object[10]; 我希望 o[0]=new HashMap(); o[1]=new ArrayList(); . . 呢? 所以 Object[] o =new Object[10] 只負責「配置10個空間給o」 , 你所謂的跑迴圈去new實體 , 是指將每一個陣列元素實體化的過程 , 在陣列的操作面上 , 迴圈不是必要 , 實體化也不見得是必要 , 這是兩個階段的事情. 所以先寫好 HashMap[] o=new HashMap[10]; //泛型不是重點,也沒有影響,就先略去不寫 for(int i=0;i<o.length;++i){ o[i]=new HashMap(); } 這其實講的不是「一件事情」 , 而是「兩件事情」. -- 糟糕...最近的表達越來越無章法了...寫的很亂:p -- What do you want to have ? / What do you have? 從書本中,你可以發現我的各種興趣。 從CD中,你可以瞭解我所喜歡的偶像明星。 或許從文字你很難以瞭解一個人,但從物品可以。 My PPolis , My past. http://ppolis.tw/user/Tony -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.219.202 ※ 編輯: TonyQ 來自: 220.128.219.202 (11/24 20:10)
文章代碼(AID): #19AfckwQ (java)
文章代碼(AID): #19AfckwQ (java)