我有以下两种在Java中声明整数数组的不同方法,一种有效,一种无效';t、 为什么??
以下是声明的第一种方式,它起了作用:我有以下两种在Java中声明整数数组的不同方法,一种有效,一种无效';t、 为什么??,java,arrays,Java,Arrays,以下是声明的第一种方式,它起了作用: static final int N = 9; public static int[] arr = new int[N]; 这是一个没有: static final int N = 9; int arr[]; //declaring array arr = new int[N]; // allocating memory to array Eclipse在第二行给了我一个错误提示,我不太明白: 令牌“;”上出现语法错误,应为 感谢您花时间阅读我的
static final int N = 9;
public static int[] arr = new int[N];
这是一个没有:
static final int N = 9;
int arr[]; //declaring array
arr = new int[N]; // allocating memory to array
Eclipse在第二行给了我一个错误提示,我不太明白:
令牌“;”上出现语法错误,应为
感谢您花时间阅读我的问题,任何建议都将不胜感激。在您的第一个示例中的
public
关键字中,我猜这会直接出现在类定义中
arr=newint[N]
是可执行代码,可执行代码不能直接出现在类定义中。根据它是否需要是静态的
,您必须将它放在构造函数中或构造函数中。正如我在初始注释中提到的,您可以在初始化块(或构造函数)中使用该语法。像
或
public class MyClass {
static final int N = 9;
int arr[]; //declaring array
public MyClass() {
super();
arr = new int[N]; // allocating memory to array
}
}
请注意,这里的两个示例的字节码实际上是相同的。初始化块(和语句)由编译器复制到构造函数中(包括默认构造函数)——基本上如图所示。哪部分不清楚?第一个是合法的Java。第二个是不合法的。具体来说,
arr=newint[N]代码>不在构造函数、方法或初始化块中。另外,int-arr[]
不是静态的
或最终的
(但在第一个示例中,arr
不一定是静态的
或最终的
。@ElliottFrisch感谢您的建议。我从一个教程网站上学到了第二部分。我想知道在什么情况下我可以使用“arr=newint[N];”来声明数组?谢谢!它们出现在类定义中,我将查看您建议的解决方法。
public class MyClass {
static final int N = 9;
int arr[]; //declaring array
public MyClass() {
super();
arr = new int[N]; // allocating memory to array
}
}