【问题标题】:unable to figure out the concept of command line arguments in Java [duplicate]无法弄清楚Java中命令行参数的概念[重复]
【发布时间】:2016-10-03 08:59:19
【问题描述】:
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],,,, 访问。

【问题讨论】:

    标签: java command-line


    【解决方案1】:

    看来这里真正的误解是关于多维数组。

    二维数组是一个数组,其元素是对一维数组的引用。

    当你初始化你的数组时

    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.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多