在同一行上声明多个Java数组?

8
在Java中,是否可以在同一行中初始化和/或声明多个数组?
例如:
int a, b, c, d, e = 4

可行但存在问题

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

似乎无法正常工作(数组大小为4)

4个回答

26

请记住:

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...

说实话,这并不值得用一行代码来表述...


5

请尝试

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

如果您想创建五个不同的数组,就必须为每个变量实例化一个数组。

如果您想创建一个数组并从五个变量引用它,则 Goran 有解决方案。


4
您缺少了new关键字 请尝试这样做:
int[] a, b, c, d, e = new int[4];

谢谢,我忘记在我的问题中加入了这个(已编辑),但它仍然无法在BlueJ中编译(变量a可能未被初始化)。 - Daniel Sopel
有趣。看起来数组对象只被分配给了名为“e”的引用。 - Goran Jovic
1
应该是 int[] a, b, c, d, e ; a = (b = (c = (d = (e = new int[4])))); 赋值运算符的返回值是被赋值的值。然而,正如Jon已经说过的那样,它们仍然会引用同一个数组..现在变成了两行..而且很丑陋.. - Goran Jovic

2

你尝试的方法只适用于值类型。在Java中,数组是引用类型,也就是对象。

正如Gwyn所解释的那样,你尝试的方法是不可能实现的。

然而,你可以考虑以下方法:

int[][] arrays = new int[4][5];

然后使用:arrays[0]arrays[1] .. 代替 a,b


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接