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

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

最佳答案

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

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

当你初始化数组时

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/

相关文章:

macos - Ubuntu 上的 findutils 4.4.x 不允许我指定 `depth` 选项

bash - 如何使用 "shell prompt"创建 CLI 程序?

python - subprocess.Popen 带有 unicode 路径

Windows 命令递归复制所有文件到主文件夹

java - 注册匿名类功能

java - Spring MVC 在类 'xxxx' 中找不到属性 'xxxx' 的 setter

java - Java获取无线网络的SSID等信息

java - Springboot tomcat嵌入NoSuchMethodError : javax. servlet.ServletContext.addFilter

java - java 项目的 Docker 文件

python - 将应用程序或脚本转换为 shell 命令