1-初始化数组和2-初始化实例变量(java)
1-initialaizing array and 2-initialaizing instance variables(java)
我的问题是我无法量化 class 主体中的数组元素,我得到一个错误:(意外标记)我只能定义它但不能初始化它。
int[] a=new int[9];
a[7]=8;//error
对于您的第一个问题:数组初始化程序(带有大括号的语句)将让您在声明时初始化数组。
An array initializer may be specified in a field declaration (§8.3, §9.3) or local variable declaration (§14.4), or as part of an array creation expression (§15.10.1), to create an array and provide some initial values.
写这个没问题:
int[] array = new int[3]{ 1, 2, 3 }; // ok
因为您在数组声明中使用了数组初始值设定项语法。
但是由于上面定义的规范,这样写是不行的:
int[] array = new int[3];
array = { 1, 2, 3 }; // not ok
关于你的第二个问题:
您提供的片段通常是有效代码,如果它是在方法中提供的。在 class 主体中,第二行不是变量 declaration/initialization,因此 class 主体中的代码无效。
但是你可以做的是:
int[] array = new int[9]{ 0, 0, 0, 0, 0, 0, 0, 8, 0 };
这是允许的,基本等于你问的。 (因为默认情况下,int[]
将使用 0
初始化其值)
我的问题是我无法量化 class 主体中的数组元素,我得到一个错误:(意外标记)我只能定义它但不能初始化它。
int[] a=new int[9];
a[7]=8;//error
对于您的第一个问题:数组初始化程序(带有大括号的语句)将让您在声明时初始化数组。
An array initializer may be specified in a field declaration (§8.3, §9.3) or local variable declaration (§14.4), or as part of an array creation expression (§15.10.1), to create an array and provide some initial values.
写这个没问题:
int[] array = new int[3]{ 1, 2, 3 }; // ok
因为您在数组声明中使用了数组初始值设定项语法。
但是由于上面定义的规范,这样写是不行的:
int[] array = new int[3];
array = { 1, 2, 3 }; // not ok
关于你的第二个问题:
您提供的片段通常是有效代码,如果它是在方法中提供的。在 class 主体中,第二行不是变量 declaration/initialization,因此 class 主体中的代码无效。
但是你可以做的是:
int[] array = new int[9]{ 0, 0, 0, 0, 0, 0, 0, 8, 0 };
这是允许的,基本等于你问的。 (因为默认情况下,int[]
将使用 0
初始化其值)