【问题标题】:Java syntax array {1,2,3} vs new int[] {1,2,3} [duplicate]Java语法数组{1,2,3} vs new int[] {1,2,3} [重复]
【发布时间】:2018-05-11 13:54:20
【问题描述】:

数组语法有一些我不明白的地方。例如我可以这样做:

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

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

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

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

【问题讨论】:

  • 问Java的创造者;这就是数组的语法。
  • 因为java需要你准确地告诉它值的类型。1,2,3也可以是float,double等......
  • 我觉得c语言也是这样,那我觉得一定有很好的理由,可惜我不知道是哪个
  • @Surely :我认为默认数字如 5、6、7 等是 int。如果您想要其他数据类型,则必须强制转换或更具体(例如,如果您想要 float 而不是 int 默认类型,则为 6f)

标签: java arrays integer


【解决方案1】:

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

例如:

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})

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 2021-06-22
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多