1

该声明

int[] a

是相同的

int a[]

但是,当您在一行中有多个声明时会发生什么?

和有什么区别

int[] a, b, c

int a[], b, c

第一个是否声明了三个数组,而在第二个中它们是ints,但是a是一个数组吗?

编辑:

为什么声明会这样发生?

这是使用语法int[] a而不是的好理由int a[]吗?

4

6 回答 6

4

来自JLS 第 10.2 章

[] 可以作为类型的一部分出现在声明的开头,或者作为特定变量的声明符的一部分,或者两者兼而有之。

例如:

byte[] rowvector, colvector, matrix[];

这个声明等价于:

byte rowvector[], colvector[], matrix[][];
于 2013-11-13T21:54:21.290 回答
2

第一个声明三个数组,第二个声明一个数组和两个整数。(参见 Java 7 的 Java 语言规范,§10.2)

于 2013-11-13T21:54:33.913 回答
2
int[] a, b, c

将创建 3 个名为 a、b 和 c 的数组。

int a[], b, c

将在 a 中创建一个整数数组,以及两个单个整数变量 b 和 c。

于 2013-11-13T21:55:40.483 回答
2

其他答案涵盖了很好的内容,但我将尝试解释为什么会发生这种情况。基本上,编译器解释

XXXXXX a, b, c;

作为

XXXXXX a;
XXXXXX b;
XXXXXX c;

不管是什么XXXXXX。所以在你的例子中,

int[] a, b, c;

变成

int[] a;
int[] b;
int[] c;

int a[], b, c;

变成

int a[];
int b;
int c;
于 2013-11-13T22:11:32.957 回答
1
static int[] a, b, c;
public static void main(String[] args){
    System.out.println(a + ", " + b + ", " + c);
}

输出:null, null, null

使用static int a[], b, c;

输出:null, 0, 0

于 2013-11-13T21:54:50.330 回答
0
int a, b, c, d, e = 4;

正在声明 5 个整数,但仅初始化“e”。

同样的方式,

int[] a, b, c, d, e = new int[4];

只会初始化 e。

你需要类似的东西

int[] a=new int[4], b=new int[4], etc...

坦率地说,不值得一衬……

于 2013-11-13T21:54:48.457 回答