作者TonyQ (沉默是金)
看板java
标题Re: [问题] 物件阵列的new问题
时间Mon Nov 24 20:10:20 2008
※ 引述《gech2001 (gech)》之铭言:
public static Map<String,String>[] transMap
= new HashMap<String,String>[82671]();
可是我看这种宣告不能用(不能编译) 爬文看到物件阵列要用回圈跟new去初使化的
1F:推 TonyQ:你误会了new HashMap[size];跟 new HashMap() 的差异. 11/23 15:29
2F:→ gech2001:有什麽样的差别呢? 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)