Java“ new Type [] {...}”数组文字初始化是哪种语法?

时间:2018-12-10 09:51:09

标签: java arrays syntax inline

引起我注意的是我对这段众所周知的代码的想法:

String[] str = new String[]{"a","b","c"};

new String[]是演员吗?如果是,为什么我们使用new并且不使用括号?我们将强制转换为:

float i = (float) 3;

它似乎也不是构造函数,因为那样我们就可以像调用函数一样使用它(例如new String[](...))。

那是什么语法,我们在Java中有更多这种语法吗?

4 个答案:

答案 0 :(得分:3)

此语法是10.6. Array Initializer作为15.10.1. Array Creation Expression一部分的示例。

  

可以在字段声明(第8.3节,第9.3节)或局部变量声明(第14.4节)中指定数组初始化器,或者作为数组创建表达式的一部分(第15.10节)指定数组初始化器。 .1),以创建一个数组并提供一些初始值

new String[]

是一个数组创建表达式,并且

{"a","b","c"}

是一个数组初始化器。

由于数组创建表达式中没有维表达式(即方括号内没有),因此必须有一个数组初始化程序:

  

如果没有维表达式,则必须有一个数组初始化程序。   如§10.6中所述,将使用数组初始化程序提供的值初始化新分配的数组。

答案 1 :(得分:2)

它叫做Array Initializer,顾名思义,它的唯一目的就是初始化数组。

答案 2 :(得分:1)

语法与array initializer有关:

  

可以在字段声明(第8.3节,第9.3节)或局部变量声明(第14.4节)中指定数组初始化器,也可以在数组创建表达式的第15.10.1节中指定数组初始化器。 ,创建数组并提供一些初始值

基本上,您不仅可以创建数组,还可以在同一条指令中初始化其所有字段。

这不是演员。


请注意代码:

String[] str = new String[]{"a","b","c"};

是用于创建和初始化数组的单个命令,但也可以使用不太冗长的版本:

String[] str = {"a","b","c"};

答案 3 :(得分:0)

可以通过多种方式创建数组,如下所示,,而您正在使用第二种方法,称为数组初始化器,您可以在其中创建数组并对其进行初始化。

int[] abc = new int[3];   // This means an array of integers with size 3 is created.

int[] def = new int[]{1,2,3};   // This means an array of integers with size 3 is created and also initialized with the values 1, 2 and 3.

在第二条语句中,我将创建一个整数数组,其元素分别为1、2和3,其大小隐式为3。

因此,在您的情况String[] str = new String[]{"a","b","c"};中,此语句正在创建一个字符串值数组,其中元素“ a”,“ b”和“ c”的隐式大小为3 归功于它初始化的3个元素。