引起我注意的是我对这段众所周知的代码的想法:
String[] str = new String[]{"a","b","c"};
new String[]
是演员吗?如果是,为什么我们使用new
并且不使用括号?我们将强制转换为:
float i = (float) 3;
它似乎也不是构造函数,因为那样我们就可以像调用函数一样使用它(例如new String[](...)
)。
那是什么语法,我们在Java中有更多这种语法吗?
答案 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个元素。