【问题标题】:1-initialaizing array and 2-initialaizing instance variables(java) [closed]1-初始化数组和2-初始化实例变量(java)[关闭]
【发布时间】:2021-05-07 15:05:40
【问题描述】:

我的问题是我无法量化类主体中数组的元素,我得到一个错误:(Unexpected token),我只能定义它而不能初始化它。

int[] a=new int[9];
a[7]=8;//error

【问题讨论】:

  • 第一个问题 - 那是 java 语法,不确定有什么疑问。第二个问题 - 提供的代码块运行良好。
  • 这也很好用:array=new int[]{6,8,1};

标签: java arrays initialization instance-variables unexpected-token


【解决方案1】:

对于您的第一个问题:数组初始化器(带有大括号的语句)将让您在声明时初始化数组。

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

(见Array Initializers

这样写就好了:

int[] array = new int[3]{ 1, 2, 3 }; // ok

因为您在数组声明中使用了数组初始值设定项语法。

但是由于上面定义的规范,这样写是不行的:

int[] array = new int[3];
array = { 1, 2, 3 }; // not ok

关于你的第二个问题:

您提供的 sn-p 通常是有效的代码,如果它是在方法中提供的。在类体中,第二行不是变量声明/初始化,因此类体中的代码无效。

但是,您可以这样做:

int[] array = new int[9]{ 0, 0, 0, 0, 0, 0, 0, 8, 0 }; 

这是允许的,基本上等于你问的。 (因为默认情况下,int[] 将使用0 初始化其值)

【讨论】:

  • 感谢您回答我的第一个问题。
  • 感谢您回答我的第一个问题,但对于第二个问题,我无法理解问题所在。您为您的类定义一个名为数组的实例变量,然后用 8 初始化其第 8 个元素。然后由第 8 个元素组成的类的每个对象默认具有 8 个值。为什么这在 Java 中是非法的?为什么我们不能在类的主体中量化它?
  • 我编辑了我的答案并添加了更多细节。 “为什么这在 Java 中是非法的?” 这就是它的简单说明。如果您的问题得到解答,请确保accept the answer
猜你喜欢
  • 2014-09-14
  • 2013-01-20
  • 2013-08-14
  • 2013-07-04
  • 2021-07-08
  • 2011-12-25
  • 1970-01-01
  • 2011-03-18
  • 2010-11-26
相关资源
最近更新 更多