Java Array声明混乱

时间:2017-05-28 01:43:06

标签: java

给定一个名为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'/ P>

...所以它采取第一个阵列并自动包装它以适应2d阵列?这很奇怪。有人可以打破这里发生的事情吗?我很确定我错过了什么。

2 个答案:

答案 0 :(得分:1)

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。因此,您打印args[1] b

答案 1 :(得分:1)

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

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

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