Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用三元运算符初始化数组_Java_Arrays_Ternary Operator - Fatal编程技术网

Java 使用三元运算符初始化数组

Java 使用三元运算符初始化数组,java,arrays,ternary-operator,Java,Arrays,Ternary Operator,我试过这样的方法: boolean funkyBoolean = true; int array[] = funkyBoolean ? {1,2,3} : {4,5,6}; 但这段代码甚至无法编译。 有什么解释吗?不是很有趣吗?{1,2,3}:{4,5,6}一个有效的表达式? 谢谢,这是事先准备好的 您只能在非常有限的情况下使用{1,2,3}语法,这不是其中之一。试试这个: boolean funkyBoolean = true; int[] array = funkyBoolean ? n

我试过这样的方法:


boolean funkyBoolean = true;
int array[] = funkyBoolean ? {1,2,3} : {4,5,6};
但这段代码甚至无法编译。 有什么解释吗?
不是很有趣吗?{1,2,3}:{4,5,6}
一个有效的表达式?
谢谢,这是事先准备好的

您只能在非常有限的情况下使用
{1,2,3}
语法,这不是其中之一。试试这个:

boolean funkyBoolean = true;
int[] array = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};
int array[] = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};
顺便说一下,好的Java风格是将声明编写为:

int[] array = ...
编辑:对于记录,
{1,2,3}
受到如此限制的原因是其类型不明确。理论上,它可以是一个整数、long、float等的数组。此外,JLS定义的Java语法禁止它,就是这样

可以指定数组初始值设定项 在声明中,或作为声明的一部分 数组创建表达式(),创建数组并提供一些初始值


这就是报告所说的(10.6)。因此,“短”版本(带有创建表达式)只允许在声明中使用(
int[]a={1,2,3};
),在所有其他情况下,如果要使用初始值设定项,则需要一个
new int[]{1,2,3}
构造。

在JDK7中,看起来
{1,2,3}
(在其他情况下)将是一个集合,类型由目标类型决定(比如泛型方法,比如
Arrays.asList
)。为了记录在案,Tom的评论中提到的建议的语言更改并没有进入JDK 7。