6

我刚刚看了这个SO帖子:

然而,哥伦比亚教授的笔记是按照下面的方式做到的。见第 9 页。

Foo foos = new Foo[12] ;

哪种方式是正确的?他们似乎在说不同的话。

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

4

5 回答 5

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();
}
于 2013-10-05T13:12:12.837 回答
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

}
于 2013-10-05T13:14:00.547 回答
1

你不能这样做

Foo foos = new Foo[12] ;

改成

Foo[] foos = new Foo[12];

第 9 页的文档中有错字。第 10 页也有错字

int[] grades = new int[3]

如果每一页都有错别字,我不会阅读整个文件。

于 2013-10-05T13:17:37.313 回答
0

以这种方式声明。

Foo[] foos = new Foo[12];
于 2013-10-05T13:14:19.643 回答
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();

}
于 2017-01-14T14:12:18.667 回答