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],,,, 访问。
最佳答案
看来这里真正的误解是关于多维数组的。
二维数组是其元素是对一维数组的引用的数组。
当你初始化数组时
String [][] argCopy = new String[2][2];
您将得到一个包含两个数组(行)的数组,每个数组有两个元素(列)。默认情况下,数组的值全部为 null
。
当你分配时
argCopy[0] = args;
二维数组的第一行现在引用的数组与最初引用的数组不同。现在 argCopy 的第一行包含 3 个 String 元素(假设您向命令行传递了 3 个参数,如 CommandArgsThree 1 2 3 中所示),可以通过 argCopy[0][0]
、argCopy[0][1]
和 argCopy[0][2]
访问,第二行仍然包含原来的 2 个空值。
当您将单个参数传递到命令行时(如 CommandArgsThree 123
),args
数组包含单个 String
元素,因此,在赋值 argCopy[0] = args;
后,argCopy
的第一行包含 1 个 String
。
关于java - 无法弄清楚Java中命令行参数的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37611912/