给定一个名为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阵列?这很奇怪。有人可以打破这里发生的事情吗?我很确定我错过了什么。
答案 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
!