我遇到了this tutorial,并想知道为什么Java编译器会为最后一个例子抛出错误。有人可以解释一下吗?
以下是摘录:
-
Java Ugliness:句法不规则和Ad Hoc逻辑
在这种不规则但方便的语法中:int[] v = {3,4};
,它在一个镜头中做了几件事:{数组类型声明,值赋值,元素声明数,插槽实现}。但是,这种语法特性一般不能使用。例如,以下是语法错误:
int[] v = new int[2];
v = {3, 4};
这是您可以尝试的完整代码。
public class H {
public static void main(String[] args) {
int[] v = new int[2];
v = {3,4};
System.out.print(v[0]);
}
}
编译错误是:“illegal start of expression
”。
答案 0 :(得分:3)
试试这个:
public class H {
public static void main(String[] args) {
int[] v = {9,6}; // new array with default values
System.out.print(v[0]);
v = new int[]{3,4}; //note: this will create a new array
System.out.print(v[0]);
}
}
答案 1 :(得分:2)
在数组大小已经生成之后,不能使用“{}”括号。代码将无法运行,因为它尝试将大小分配给已具有大小的数组。要在“int [] v = new int [2];”之后定义数组中的元素,必须使用“v [0] = 3;”和“v [1] = 4;”
答案 2 :(得分:0)
这只是违反语法规则。您可以执行以下任一操作以获得相同的结果。
int[] v = {3, 4};
v[0] = 3; v[1] = 4;