该声明
int[] a
是相同的
int a[]
但是,当您在一行中有多个声明时会发生什么?
和有什么区别
int[] a, b, c
和
int a[], b, c
第一个是否声明了三个数组,而在第二个中它们是int
s,但是a
是一个数组吗?
编辑:
为什么声明会这样发生?
这是使用语法int[] a
而不是的好理由int a[]
吗?
来自JLS 第 10.2 章:
[] 可以作为类型的一部分出现在声明的开头,或者作为特定变量的声明符的一部分,或者两者兼而有之。
例如:
byte[] rowvector, colvector, matrix[];
这个声明等价于:
byte rowvector[], colvector[], matrix[][];
第一个声明三个数组,第二个声明一个数组和两个整数。(参见 Java 7 的 Java 语言规范,§10.2)
int[] a, b, c
将创建 3 个名为 a、b 和 c 的数组。
int a[], b, c
将在 a 中创建一个整数数组,以及两个单个整数变量 b 和 c。
其他答案涵盖了很好的内容,但我将尝试解释为什么会发生这种情况。基本上,编译器解释
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;
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
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...
坦率地说,不值得一衬……