【问题标题】:Java Array declaration confusion [duplicate]Java Array声明混淆[重复]
【发布时间】:2017-10-28 14:48:26
【问题描述】:

给定一个名为 ThisClass 的类,它只包含这个:

public static void main(String[][] args) {
    System.out.println(args[0][1]);
}
public static void main(String[] args) {
    ThisClass app = new ThisClass();
    String[][] newargs = {args};
    app.main(newargs);
}

如果你编译它然后用java ThisClass a b c 运行它,它会打印: b

...所以它采用第一个数组并自动包装它以适应二维数组?这很奇怪。有人可以分解这里发生的事情吗?我很确定我错过了一些东西。

【问题讨论】:

  • 在java中真的没有任何'2d'数组,只有数组的数组。没有自动包装,您获取了一个数组,然后使用数组文字语法将其放入另一个数组中。因此,您制作了一个数组数组。

标签: java


【解决方案1】:

正在调用第二个 main 函数(以 String[] 作为参数的函数)。

在此函数中,您将 newArgs 创建为一个仅包含一个元素的二维数组,此元素为数组 {a, b, c}

因此,当您打印args[0][1] 时,您会打印数组{a, b, c} 的索引1 处的元素,即b

【讨论】:

    【解决方案2】:

    System.out.println(args[0][1]); 中,args[0]String[] 相同

    public static void main(String[] args) {
        ThisClass app = new ThisClass();
        String[][] newargs = {args};
        app.main(newargs);
    }
    

    因为newargs 包含一个元素String[] args。因此,您正在 printlng args[1] whichb

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2012-08-12
      • 2014-03-15
      • 2022-01-13
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      相关资源
      最近更新 更多