Java 使用值初始化数组-我是否应该显式地实例化该类?

Java 使用值初始化数组-我是否应该显式地实例化该类?,java,Java,我经常看到数组的初始化方式如下: String[] array = new String[] { "foo", "bar", "baz" }; 但阅读说明,短语法不需要显式实例化构造函数: 或者,您可以使用快捷方式语法创建和 初始化数组: int[] anArray = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 }; 因此,假设这两种初始化方法: String[] array = new S

我经常看到数组的初始化方式如下:

String[] array = new String[] { "foo", "bar", "baz" };
但阅读说明,短语法不需要显式实例化构造函数:

或者,您可以使用快捷方式语法创建和 初始化数组:

 int[] anArray = { 
     100, 200, 300,
     400, 500, 600, 
     700, 800, 900, 1000
 };

因此,假设这两种初始化方法:

String[] array = new String[] { "foo", "bar", "baz" };
String[] array2 = { "foo", "bar", "baz" };
这两者有什么区别吗?这两种方法似乎都是一样的,在这种情况下,我应该假设第二种方法隐式调用
新字符串[]
,而第一种方法只是一种更详细的方法,还是在幕后有更多的方法


从Java开始很抱歉,如果这是一个太愚蠢的问题,但我在web上找不到任何与此相关的内容。

这两种方法是等效的。但是请注意,简明语法只能在变量声明中使用。在变量声明之外,必须使用详细语法:

    String[] array;
    array = new String[] { "foo", "bar", "baz" }; // OK

    String[] array2;
    array2 = { "foo", "bar", "baz" };             // ERROR
有关进一步讨论,请参阅

这两者有什么区别吗

最终结果没有差别。然而,根据

数组初始值设定项可以在声明(,)中指定,也可以作为数组创建表达式()的一部分指定,以创建数组并提供一些初始值

因为数组是可变的,所以每个数组都是一个新实例是有意义的

String[] array1 = { "foo", "bar", "baz" };
String[] array2 = { "foo", "bar", "baz" };

i、 e.修改
array1
不会影响
array2

我非常喜欢规范链接,非常感谢。但我相信NPE的答案对于未来的Java初学者来说更加清晰/简单,他们可能会来阅读这个问题+在任何情况下,两者各1个
=]
我有一个不错的OO基础,并且知道每个数组都是一个新实例,问题是
new String[]
是否会对数组的初始化产生任何影响。