Java Array声明混乱

Java Array declaration confusion

本问题已经有最佳答案,请猛点这里访问。

给定一个名为ThisClass的类,该类只包含以下内容:

1
2
3
4
5
6
7
8
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运行它,它将打印:乙

…所以它取第一个数组并自动包装以适合二维数组??这很奇怪。有人能把这里的情况说清楚吗?我很确定我错过了什么。


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

在这个函数中,您创建一个只包含一个元素的二维数组,这个元素就是数组{a, b, c}

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


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

1
2
3
4
5
public static void main(String[] args) {
    ThisClass app = new ThisClass();
    String[][] newargs = {args};
    app.main(newargs);
}

因为newargs包含一个元素,所以String[] args。因此,您打印的是args[1],即b