锯齿状阵列:非法表达式开始

时间:2014-06-30 02:35:18

标签: java jagged-arrays

我遇到了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”。

3 个答案:

答案 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)

这只是违反语法规则。您可以执行以下任一操作以获得相同的结果。

  1. int[] v = {3, 4};
  2. v[0] = 3; v[1] = 4;