Java 如何初始化对象数组?

Java 如何初始化对象数组?,java,arrays,array-initialization,Java,Arrays,Array Initialization,我只是看看这个 然而,它的实现方式如下。见第9页 Foo foos = new Foo[12] ; 哪条路正确?他们似乎说了不同的话 特别是,在notes版本中没有[]这在Java中根本无法编译(因为您将数组类型的值分配给非数组类型的变量Foo): 它被javac拒绝,并出现以下错误(另请参见:): 要编译它,请将foo声明为foo[]类型,然后在其上循环: Foo[] foo = new Foo[12]; # <<<<<<<<< fo

我只是看看这个

然而,它的实现方式如下。见第9页

Foo foos = new Foo[12] ;
哪条路正确?他们似乎说了不同的话


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

这在Java中根本无法编译(因为您将数组类型的值分配给非数组类型的变量
Foo
):

它被
javac
拒绝,并出现以下错误(另请参见:):

要编译它,请将
foo
声明为
foo[]
类型,然后在其上循环:

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

for (int i = 0; i < 12; i += 1) {
    foos[i] = new Foo();
}
Foo[]Foo=newfoo[12];#<代码>Foo[]foos=新Foo[12]//声明数组
对于(inti=0;i用这种方式声明

Foo[] foos = new Foo[12];
你不能这么做

Foo foos = new Foo[12] ;
改为

Foo[] foos = new Foo[12];
第9页的文件有一个打字错误。第10页也有一个打字错误

int[] grades = new int[3]
如果每一页都有打字错误,我就不会阅读整个文档。

//以Java8样式声明12个Foo元素的数组
//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();

}
Foo[]foos=Stream.generate(Foo::new).limit(12).toArray(Foo[]::new); //而不是 Foo[]foos=新的Foo[12];
例如(inti=0;它不会用Java编译。我怀疑这只是教授的一个输入错误。不要把它变成一个联邦案件(或者更糟糕的是,国会的一场斗殴)。(应该注意的是,“初始化”这个词必须仔细解释。
new
操作分配并初始化对Foo的引用数组,但它不会创建任何Foo对象——数组最初都是
null
引用。)我简单地看了一下笔记。除了打字错误之外,它们似乎是合理的,是合乎逻辑的。@jeroenvanevel:修改了我的答案。@nativist.bill.cutting:为什么你不能创建自己的示例并验证它是否编译?你说你不懒惰,但在让Eric为你做之前你是如何尝试的?@nativist.bill.cut丁:那是什么让你不接受我的回答,而接受另一个回答,除了没有解释之外,都说了同样的话?
Foo[] foos = new Foo[12];
int[] grades = new int[3]
//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();

}