Java多数组声明

Java多数组声明,java,arrays,Java,Arrays,声明 int[] a 与 int a[] 但是,如果在一行中有多个声明,会发生什么情况 两者的区别是什么 int[] a, b, c 及 第一个声明了三个数组,第二个声明了ints,但是a是一个数组吗 编辑: 为什么宣言会这样 这是使用语法int[]a而不是int a[]的一个好理由吗?来自: []可能作为类型的一部分出现在声明的开头,或者作为特定变量的声明器的一部分出现,或者两者都出现 例如: byte[] rowvector, colvector, matrix[]; 本声明相当于:

声明

int[] a

int a[]
但是,如果在一行中有多个声明,会发生什么情况

两者的区别是什么

int[] a, b, c

第一个声明了三个数组,第二个声明了
int
s,但是
a
是一个数组吗

编辑:

为什么宣言会这样

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

来自:

[]可能作为类型的一部分出现在声明的开头,或者作为特定变量的声明器的一部分出现,或者两者都出现

例如:

byte[] rowvector, colvector, matrix[];
本声明相当于:

byte rowvector[], colvector[], matrix[][];
从:

[]可能作为类型的一部分出现在声明的开头,或者作为特定变量的声明器的一部分出现,或者两者都出现

例如:

byte[] rowvector, colvector, matrix[];
本声明相当于:

byte rowvector[], colvector[], matrix[][];

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

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

声明了5个整数,但只初始化了“e”

同样地,

int[] a, b, c, d, e = new int[4];
将只初始化e

你需要像这样的东西

int[] a=new int[4], b=new int[4], etc...
坦白说,这不值得一句话

static int[] a, b, c;
public static void main(String[] args){
    System.out.println(a + ", " + b + ", " + c);
}
声明了5个整数,但只初始化了“e”

同样地,

int[] a, b, c, d, e = new int[4];
将只初始化e

你需要像这样的东西

int[] a=new int[4], b=new int[4], etc...
坦白说,这不值得一句话

static int[] a, b, c;
public static void main(String[] args){
    System.out.println(a + ", " + b + ", " + c);
}
输出:
null,null,null

使用
静态int a[],b,c

输出:
null,0,0

int[] a, b, c
输出:
null,null,null

使用
静态int a[],b,c

输出:
null,0,0

int[] a, b, c
将创建名为a、b和c的3个数组

int a[], b, c
将创建a中的整数数组,以及两个单整数变量b和c

int a[], b, c
将创建名为a、b和c的3个数组

int a[], b, c

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

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

int a[], b, c
XXXXXX a, b, c;
作为

无论是什么
XXXXXX
。在你们的例子中

int[] a, b, c;
变成

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

变成

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

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

XXXXXX a, b, c;
作为

无论是什么
XXXXXX
。在你们的例子中

int[] a, b, c;
变成

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

变成

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

第一个声明了三个数组,第二个声明了int,但是a是数组吗?
你试过了吗?@Cruncher我认为这不是一个合适的评论。这个问题是合法的,但它并不能真正解释为什么是这样以及这样的声明是如何工作的。@sashkello问题问的是是否是这样,而不是为什么是这样。@Cruncher抱歉,我将更新我的问题以更好地反映意图。据我所知,第一个声明三个数组,而第二个声明一个数组和两个整数。因为有龙,我从不使用逗号分隔的声明,而是将所有内容放在单独的行上。
第一个声明三个数组,第二个声明是int,但a是数组吗?
你试过了吗?@Cruncher我认为这不是一个合适的注释。这个问题是合法的,但它并不能真正解释为什么是这样以及这样的声明是如何工作的。@sashkello问题问的是是否是这样,而不是为什么是这样。@Cruncher抱歉,我将更新我的问题以更好地反映意图。据我所知,第一个声明三个数组,而第二个声明一个数组和两个整数。因为有龙,我从不使用逗号分隔的声明,而是将所有内容放在单独的行上。但它们并不等同于
byte rowvector[],colvector,matrix[]”
True,但对我来说,这似乎符合所示示例的逻辑。“逻辑”是一件棘手的事情。在您的示例中,是的,但在
inta[],b,c本质上,这是同一个示例,但我认为它不太明显。我喜欢@quazzieclodo的答案。这非常清楚。但它们并不等同于
字节行向量[]、colvector、矩阵[]
True,但对我来说,这似乎符合所示示例的逻辑。“逻辑”是一件棘手的事情。在您的示例中,是的,但在
inta[],b,c本质上,这是同一个示例,但我认为它不太明显。我喜欢@quazzieclodo的答案。这很清楚。