我刚看了这个SO帖子:
然而,哥伦比亚大学的教授笔记如下所示。请参见第9页。
Foo foos = new Foo[12] ;
哪种方式是正确的?它们似乎说不同的事情。
特别地,在笔记版本中,没有[]
。
我刚看了这个SO帖子:
然而,哥伦比亚大学的教授笔记如下所示。请参见第9页。
Foo foos = new Foo[12] ;
哪种方式是正确的?它们似乎说不同的事情。
特别地,在笔记版本中,没有[]
。
这段代码在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();
}
Foo[] foos = new Foo[12] ; //declaring array
for(int i=0;i<12;i++){
foos[i] = new Foo(); //initializing the array with foo object
}
你不能这样做
Foo foos = new Foo[12] ;
change to
Foo[] foos = new Foo[12];
文档第9页有一个错别字。第10页也有一个错别字。
int[] grades = new int[3]
用这种方式声明。
Foo[] foos = new Foo[12];
//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();
}
new
操作分配并初始化了一个指向Foo的引用数组,但它不会创建任何Foo对象——数组最初都是null
引用。 - Hot Licks