Java 语法数组 {1,2,3} 与 new int[] {1,2,3} [duplicate]

Java syntax array {1,2,3} vs new int[] {1,2,3} [duplicate]

提问人:AntonBoarf 提问时间:5/11/2018 最后编辑:CohensiusAntonBoarf 更新时间:1/25/2021 访问量:8611

问:

数组语法有些我不明白。例如,我可以这样做:

int[] tab = {1,2,3};

假设我有一个将数组作为参数的方法,我可以这样做:myMethod(tab);

但是为什么我不能这样做:myMethod({1,2,3})

为什么我必须添加一个额外的“new int[]”,如下所示:Method(new int[] {1,2,3})

Java 数组整

评论

2赞 Tim Biegeleisen 5/11/2018
问问 Java 的创造者;这就是数组的语法。
1赞 Surely 5/11/2018
因为 Java 需要你准确地告诉它值的类型。1、2、3也可以是浮点、双点等...
0赞 khelwood 5/11/2018
查看 docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.6
0赞 deFreitas 5/11/2018
我认为 c 语言也是如此,那么我认为一定有一个很好的理由,不幸的是我不知道哪个是
0赞 AntonBoarf 5/11/2018
@Surely : 我以为默认情况下像 5、6、7 等这样的数字是 int。如果你想要其他数据类型,你必须强制转换或更具体(例如,如果你想要一个浮点数而不是 int defalut 类型,则为 6f)

答:

3赞 Alex Shesterov 5/11/2018 #1

对这种 Java 语言设计决策的一种可能的解释是,数组初始化已经包含数组类型

例如:

int[] myArray = {1, 2, 3};

是明确的。但是,如果在表达式中创建了新数组,则并不总是清楚使用哪种类型,例如

myMethod({1, 2, 3})

可能意味着

myMethod(new int[] {1, 2, 3})

myMethod(new Integer[] {1, 2, 3})

myMethod(new Number[] {1, 2, 3})

甚至

myMethod(new Object[] {1, 2, 3})
1赞 code_fish 5/11/2018 #2

语法 {1,2,3}(前面没有 new int[])只能用作数组初始值设定项表达式。在所有其他上下文(包括方法调用)中,需要使用 new 运算符。

有关本教程的更多信息:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html