作者brianhsu (坟墓)
看板java
标题Re: [问题] 物件阵列的问题
时间Thu Jul 8 16:46:42 2010
※ 引述《bapemilo (猜猜看)》之铭言:
: 新手的问题~
: public class test{
: Member[] members=new Member[2];
^^^^^^^^^^^^^^^^
这个叫宣告 (Declare)
: void buildMembers(){
: members[0] = new Member();
: members[1] = new Member();
^^^^^^^^^^^^^^^^^^^^^^^^^^
这两个叫 assignment / expression
: }
: }
: 当以这样宣告的时候compile可以过
: 但是如果改成这样
: public class test{
: Member[] members=new Member[2];
: members[0] = new Member();
: members[1] = new Member();
: }
: compile时却不能过 被这问题困扰好久~ 上网找一阵子也没找到答案
: 希望各位高手能帮忙解答下新手的问题~~
Note: 以下讲的不完全正确,只是大致上的概念,如果你要正确的答案,
去翻 Java 的规格书会最准确,告诉你什麽能 compile 过,什麽
不能 compile 过。
在 Java 里面,所有 Expression 都只能在 method 里出现。
(好啦,我知道还有 static initialization block 也可以,不过就先当这样吧)
唯一的例外是当你在宣告变数时,可以同时用一个 expression 当做 assignment。
所以,你的第一个例子是例外。
第二个例子是不合法的(Expression 只能出现在 method 中),当然不能编译。
--
~
白马带着她一步步地回到中原。白马已经老了,只能慢慢地走,
'v'
Brian Hsu 但终是能回到中原的。江南有杨柳、桃花,有燕子、金鱼……
// \\
( 坟 墓 )
/( )\
但这个美丽的姑娘就像古高昌国人那样固执。 【白马啸西风】
^`~'^
http://bone.twbbs.org.tw/blog 『那都是很好很好的,可我偏不喜欢。』
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.109.19.36
1F:→ adrianshum:不止 static initialization block... 07/08 17:15
2F:推 tomap41017:??还有什麽??恕小弟才疏学浅 07/08 22:22
3F:推 bapemilo:谢谢b大告知~这板的大家都很热心! 07/08 23:02
4F:→ jeff218:还有initialization block...(逃走) 07/09 00:03
5F:→ adrianshum:楼上正解 07/09 00:37
6F:→ brianhsu:从来没听过。(大误) 07/09 08:39
7F:→ brianhsu:不过我还真的几乎没用过initialization block就是了。:p 07/09 08:41
8F:→ sbrhsieh:instance/static initializer(block) 都是 method。 07/10 00:38