如果将结果数组分配给变量,它是否为匿名数组

(我正在攻读Java助理考试OCJP 7)

一个问题要求选择非法初始化的例子。

其中一个答案是: –

int [] k= new int[2]{5,10}; 

解释说,在创建匿名数组时,指定数组的大小是非法的。

据我所知,这不是一个匿名数组,因为它被命名为“k”。

调用如下方法: –

 operateOnArray(new int[]{5,10}); 

本来是一个匿名数组的例子,因为它没有被声明。

我可以看到“2”使其成为非法 – 但这并不是匿名的,

有人可以告诉我吗?

嗯……根据我的教学内容(以及我读过的内容),匿名数组的定义是:“没有任何名称的数组,它只是一个用于创建和使用它的数组”。 由于它没有任何名称,因此您无法重用该数组。

我准备参加OCJP时最好的参考资料是:

 anonymous int array : new int[] { 1, 2, 3, 4}; anonymous String array : new String[] {"one", "two", "three"}; anonymous char array : new char[] {'a', 'b', 'c'); 

您可以注意到(并且您已经知道)这些类型的数组同时具有创建和初始化(当您使用new()关键字在同一行中初始化它们而不分配任何变量时,您会以后无法重复使用)。

因此,根据您的提及,当您将数组分配给变量时,即使您创建它并在同一行初始化,也会将其分配给变量,以便以后可以重用它,它不是匿名的,它可以被引用,所以我想知道为什么在“匿名数组”的例子中你会看到类似的东西:

 int [] k= new int[2]{5,10}; 

匿名意味着“名称不知道”,这不是您指定的行中的情况,因为数组被分配给名为“k”的变量。 但是,这个显示了由引用变量“k”指向的匿名数组对象创建的属性,所以如果我们只写“new int [] {1,2,3};” 那么这就是如何创建匿名数组对象…

当我准备OCJP 7时,我从这个页面阅读了很多文章,我建议你在将来深入研究Java 🙂

参考: http : //javarevisited.blogspot.com/2012/01/anonymous-array-example-java-create.html

你也可以在那里找到很好的例子和文章:)

我认为这将像一个匿名方法……

匿名数组就像myListView.setAdapter(this,new String [] {“Peter”,“Paul”,“Marry”});

其中(new String [] {“Peter”,“Paul”,“Marry”})是匿名数组:-)

因此,正常(非匿名)数组将被删除(可能在onCreate中)

String [] array = new String [] …

虽然匿名者在使用前不会被删除…

目前尚不清楚究竟是什么问题,但我明确指出,如何在Java中正确使用匿名数组的概念存在困惑。 您只能将匿名数组声明为函数的参数。 所有其他尝试在此上下文中声明匿名数组失败。 这个快速video显示了它: 匿名数组作为函数的参数

如果你看到这部分代码:

 new int[2]{5,10} 

在第一个声明然后

 new int[]{5,10} 

从第二次宣言。 它基本相同

所以,声明如下:

 new int[]{5,10} 

是一个匿名数组,不管接下来发生什么。 如果不将其设置为变量,则它保持匿名。