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

标签 java arrays language-lawyer anonymous

(我正在准备 Java Associate 考试 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};

Anonymous 的意思是“不知道名字”,这在你指定的行中不是这种情况,因为数组被分配给了一个名为“k”的变量。然而,这个显示了匿名数组对象创建的属性,它由引用变量“k”指向,所以如果我们只写“new int[]{1,2,3};”那么这就是创建匿名数组对象的方式...

当我准备 OCJP 7 时,我从这个页面阅读了很多文章,我会推荐给你,以便将来深入学习 Java :)

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

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

关于java - 如果将结果数组分配给变量,它是否是匿名数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27274356/

相关文章:

c++ - 纯虚析构函数的目的是什么?

java - 变量 'menu' 可能尚未初始化

java - 如何为线程池服务器预分配对象?

java - 匹配器查找第 n 个匹配索引

java - 在Java中寻找数组列表中的特定对象?

javascript - 如何在javascript中创建数组作为属性?

c - 使用 fgets 将字符串从文件流读取到字符数组中。 [C]

php - 检查一个数组中某个键的值是否等于另一个数组中不同键的值

c++ - 将结构体转换为整数合法吗?

c - 访问未初始化的变量时避免未定义的行为