【问题标题】:why I need 'new' for array parameter? [duplicate]为什么我需要“新”作为数组参数? [复制]
【发布时间】:2020-09-03 10:08:51
【问题描述】:
int add(int[] scores){ ... }
-------------------------------
int result = add({1,2,3});  //wrong
int result = add(new int[] {1,2,3});  //correct

我知道我必须像这样编写代码,但是 为什么我们必须将'new int []'作为参数??

【问题讨论】:

  • 你就做吧,语言是这样指定的。没有更深层的原因。
  • long[] l = {1, 2, 3}; 也是有效的,那么您的方法如何确定它没有通过long[]?您必须指定类型...
  • 仅供参考:如果您声明了使用可变参数的方法,则不需要。方法声明:int add(int.. scores)。调用语法:add(1,2,3)。注意调用语法中缺少{ }。否则方法像以前一样工作,即scores 是类型int[]

标签: java


【解决方案1】:

数组初始化语法({1, 2, 3})只能使用in certain circumstances

可以在字段声明(第 8.3 节、第 9.3 节)或局部变量声明(第 14.4 节)中指定数组初始值设定项,或作为数组创建表达式的一部分(第 15.10.1 节)来创建数组并提供一些初始值。

在其他情况下,您需要使用数组创建表达式(例如new int[] {1, 2, 3})。

这就是指定语言的方式。它可能会有所不同,但事实并非如此。

【讨论】:

    【解决方案2】:

    如前所述,数组初始化只能用在变量声明中。

    您可能希望像这样在示例中使用可变参数:

    int add(int... scores){ ... }
    

    你可以通过两种方式调用它:

    int result = add(1,2,3); 
    int result = add(new int[] {1,2,3}); 
    

    【讨论】:

    • 是谁指出的?
    • @Andy Turner 在另一个答案中
    • 好的。我以为你的意思可能是Andreascomment
    猜你喜欢
    • 2012-09-15
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2019-11-28
    相关资源
    最近更新 更多