This question already has answers here:
What is “String args[]”? parameter in main method Java
                                
                                    (15个答案)
                                
                        
                3年前关闭。
            
        

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],...访问。

最佳答案

似乎真正的误解是关于多维数组。

2维数组是其元素引用1维数组的数组。

当您使用初始化数组时

String [][] argCopy = new String[2][2];


您将获得一个包含两个数组(行)的数组,每个数组都有两个元素(列)。默认情况下,数组的值均为null

分配时

argCopy[0] = args;


现在,二维数组的第一行引用的数组与原始引用的数组不同。现在,argCopy的第一行包含3个String元素(假设您像在CommandArgsThree 1 2 3中一样向命令行传递了3个参数),可以使用argCopy[0][0]argCopy[0][1]argCopy[0][2]进行访问,并且第二行仍包含原始的2个空值。

当您将单个参数传递给命令行时(如在CommandArgsThree 123中一样),args数组包含单个String元素,因此在分配argCopy[0] = args;之后,argCopy的第一行包含1个。

关于java - 无法弄清楚Java中命令行参数的概念,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37611912/

10-10 04:15