public class CommandArgsThree
{
public static void main(String [] args)
{
String [][] argCopy = new String[2][2];
int x;
argCopy[0] = args;
x = argCopy[0].length;
for (int y = 0; y < x; y++)
{
System.out.print(" " + argCopy[0][y]);
}
}
}
并且命令行调用是: java CommandArgsThree 1 2 3
1.上述命令与此之间的区别是什么:java CommandArgsThree 123,args类型是什么以及它对不同输入的行为。
String [][] argCopy = new String[2][2];
2.如果上述语句创建了一个二维的字符串数组,即
null null
null null
因为这可以通过argCopy [0] [0],argCopy [0] [1]访问 或
{null,null,null,null}
因为这可以通过argCopy [0],argCopy [1],argCopy [2] ,,,,来获取。
答案 0 :(得分:3)
这里似乎真正的误解是关于多维数组。
二维数组是一个数组,其元素是对一维数组的引用。
使用
初始化数组时String [][] argCopy = new String[2][2];
你得到一个包含两个数组(行)的数组,每个数组都有两个元素(列)。默认情况下,您的数组值均为null
。
分配时
argCopy[0] = args;
2D阵列的第一行现在指的是与最初引用的不同的数组。现在argCopy
的第一行包含3个String
元素(假设您将3个参数传递给命令行,如CommandArgsThree 1 2 3
中所示),可以使用argCopy[0][0]
访问argCopy[0][1]
,{ {1}}和argCopy[0][2]
,第二行仍包含原始的2个空值。
将单个参数传递给命令行时(如CommandArgsThree 123
所示),args
数组包含一个String
元素,因此在赋值argCopy[0] = args;
之后, argCopy
的第一行包含1 String
。