首页 文章

什么类型的语法是Java“new Type [] {...}”数组文字初始化?

提问于
浏览
1

grab 我的注意力,我无法向自己解释,是对这个众所周知的代码的思考:

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

new String[] 是演员吗?如果是,为什么我们使用 new 而没有括号?我们会像:

float i = (float) 3;

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

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

4 回答

  • 1

    数组可以通过多种方式创建,如下所示, and you are using the second one which is called the Array Initializer where you create the array while also initializing it.

    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"};this statement is creating an array of String values with elements "a", "b" and "c" with the implicit size of the array being 3 由于它被初始化的3个元素 .

  • 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节中所述 .

  • 2

    语法与array initializer有关:

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

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

    它不是演员 .


    注意代码:

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

    是创建和初始化数组的单个命令,但也可以使用较不详细的版本:

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

    它被称为Array Initializer,其唯一目的,顾名思义,是初始化数组 .

相关问题