无法弄清楚Java中命令行参数的概念

时间:2016-06-03 10:25:49

标签: java command-line

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] ,,,,来获取。

1 个答案:

答案 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