Re: [問題] 物件陣列的new問題
※ 引述《gech2001 (gech)》之銘言:
public static Map<String,String>[] transMap
= new HashMap<String,String>[82671]();
可是我看這種宣告不能用(不能編譯) 爬文看到物件陣列要用迴圈跟new去初使化的
推
11/23 15:29,
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)
討論串 (同標題文章)