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.

(见Array Initializers

写这个没问题:

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 初始化其值)