如何初始化一个对象数组?

时间:2013-10-05 13:10:54

标签: java arrays array-initialization

我刚看了这个SO Post:

但是,Columbia professor's notes按照以下方式执行。见第9页。

Foo foos = new Foo[12] ;

哪种方式正确?他们似乎说不同的事情。

特别是,在备注版本中没有[]

5 个答案:

答案 0 :(得分:7)

这根本不会用Java编译(因为你要将数组类型的值赋给非数组类型Foo的变量):

Foo foos = new Foo[12];

javac拒绝并出现以下错误(另请参阅:http://ideone.com/0jh9YE):

test.java:5: error: incompatible types
        Foo foos = new Foo[12];

要进行编译,请将foo声明为类型Foo[],然后循环遍历它:

Foo[] foo = new Foo[12];  # <<<<<<<<<

for (int i = 0; i < 12; i += 1) {
    foos[i] = new Foo();
}

答案 1 :(得分:1)

Foo[] foos = new Foo[12] ; //declaring array 

for(int i=0;i<12;i++){
   foos[i] = new Foo();  //initializing the array with foo object

}

答案 2 :(得分:1)

你不能这样做

Foo foos = new Foo[12] ;

更改为

Foo[] foos = new Foo[12];

第9页的文档中有拼写错误。第10页也有拼写错误

int[] grades = new int[3]

如果拼写错误出现在每页上,我都不会阅读整篇文档。

答案 3 :(得分:0)

以这种方式宣告。

Foo[] foos = new Foo[12];

答案 4 :(得分:0)

//declaring array of 12 Foo elements in Java8 style
Foo[] foos = Stream.generate(Foo::new).limit(12).toArray(Foo[]::new);

// instead of
Foo[] foos = new Foo[12];
for(int i=0;i<12;i++){
   foos[i] = new Foo();

}