什么是“字符串参数[]”?参数的主要方法Java

我刚开始用Java写程序。下面的Java代码是什么意思?

public static void main(String[] args)
  • String[] args是什么?

  • 什么时候你会使用这些args?

源代码和/或示例优先于抽象的解释

1205957 次浏览

args包含调用时传递给Java程序的命令行参数。例如,如果我像这样调用程序:

$ java MyProg -f file.txt

那么args将是一个包含字符串"-f""file.txt"的数组。

在Java中,args包含所提供的命令行参数作为String对象的数组。

换句话说,如果你在你的终端上运行你的程序:

C:/ java MyProgram one two

那么args将包含["one", "two"]

如果你想输出args的内容,你可以像这样循环它们…

public class ArgumentExample {
public static void main(String[] args) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}

程序将在终端中打印:

C:/ java MyProgram one two
one
two
    

C:/

String [] args也是在Java中声明字符串数组的方法。

在这个方法签名中,当方法被调用时,数组args将被填充值(如这里的其他示例所示)。由于你正在学习,所以值得理解的是,这个args数组就像你在方法中自己创建一个一样,如下所示:

public void foo() {
String [] args = new String[2];
args[0] = "hello";
args[1] = "every";


System.out.println("Output: " + args[0] + args[1]);


// etc... the usage of 'args' here and in the main method is identical
}

当从控制台中执行java类时,将调用main方法。为了实现这一点,这个主方法的定义必须是

public static void main(String [])

这个字符串数组被称为args是一个标准约定,但不是严格要求的。在调用程序时,可以在命令行中填充此数组

java MyClass a b c

它们通常用于定义程序的选项,例如要写入或读取的文件。

这些是Java中的命令行参数。

换句话说,如果你跑

java MyProgram一二

那么args包含:

["一;quot;二;quot;]

public static void main(String [] args) {
String one = args[0]; //=="one"
String two = args[1]; //=="two"
}

这样做的原因是为了配置应用程序以特定的方式运行,或者为它提供所需的一些信息。


如果你是Java的新手,我强烈建议你阅读官方的Oracle的Java™教程

< p > public static void main(字符串args[]) args是一个控制台行参数数组,其数据类型为String。 在这个数组中,你可以通过在命令行调用它们来存储各种字符串参数,如下所示: java myProgram Shaan Royal 那么Shaan和Royal将被存储在数组中 arg [0] = " Shaan”; arg[1] =“皇家”; 当您不在命令行调用它们时,也可以在程序内部手动执行此操作。< / p >

当你完成你的代码时,你将把它转换成一个扩展名为。java的文件,可以通过双击它来运行,但也可以通过控制台(mac上的终端,windows上的cmd.exe)让用户做很多事情。一件事是他们可以看到控制台消息(System.out。print或System.out.println),如果双击就看不到。他们能做的另一件事是指定参数,所以通常你会使用直线

java -jar MyCode.jar

导航到程序的文件夹后

cd C:My/Code/Location

在Windows或

cd My/Code/Location

在Mac上(注意Mac不那么笨重)运行代码,但指定你要使用的参数

java -jar MyCode.jar parameter1 parameter2

这些参数存储在args数组中,你可以在你的程序中使用它,你想让用户控制特殊的参数,如使用什么文件或程序可以有多少内存。如果你想知道如何使用数组,你可以在这个网站上找到一个主题,或者只是谷歌它。注意,可以使用任意数量的参数。

我认为上面的答案已经很好地涵盖了String args[]只是一个字符串参数数组,你可以在运行它时传递给你的应用程序。为了完成,我可能会补充,将传递给main方法的方法参数定义为类型为String的变量参数(varargs)也是有效的:

public static void main (String... args)

换句话说,main方法必须接受String数组(String args[])或varargs (String... args)作为方法参数。args这个名字也没有什么魔力。你也可以写arguments甚至freddiefujiwara,如下所示:

public static void main (String[] arguments)

public static void main (String[] freddiefujiwara)

样式dataType[] arrayRefVar是首选。dataType arrayRefVar[]样式来自C/ c++语言,并在Java中被采用,以适应C/ c++程序员。

用通俗易懂的语言解释。

当我们将JVM指向类名时,main方法希望我们提供一些参数。这意味着,假设你的文件名是Try.java,现在要在命令提示符中执行这个命令,你写“javac Try.java”来编译,然后再写“java Try”来执行。现在假设不是简单地写“java Try”而是写“java Try 1”。这里你传递了一个参数“1”。这将由你的main方法获取,即使你没有在你的代码中使用它。

如果你想检查你的主方法是否真的取了参数"1"简单地,在你的main方法中输入以下内容:

for(int i = 0; i < args.length; i++) {
System.out.println("Argument is: "+args[i]);
}

即使OP只谈论String[] args,我想给出一个public static void main(String[] args)的完整示例。

Public:是一个访问修饰符,它定义了谁可以访问这个方法。Public意味着这个方法可以被任何类访问(如果其他类能够访问这个类的话)。

Static:是一个关键字,它标识类相关的东西。这意味着给定的方法或变量与实例无关,而是与类相关。可以在不创建Class实例的情况下访问它。

Void:用于定义方法的返回类型。它定义了方法可以返回的内容。Void表示方法不会返回任何值。

main:方法的名称。JVM仅将此方法名作为具有特定签名的应用程序的起点进行搜索。

String[] args:是主方法的参数。

如果你查看JDK源代码(JDK -src\j2se\src\share\bin\java.c):

/* Get the application's main method */
mainID = (*env)->GetStaticMethodID(env, mainClass, "main",
"([Ljava/lang/String;)V");
...
{    /* Make sure the main method is public */
...
mods = (*env)->CallIntMethod(env, obj, mid);
if ((mods & 1) == 0) { /* if (!Modifier.isPublic(mods)) ... */
message = "Main method not public.";
messageDest = JNI_TRUE;
goto leave;
...

你可以看到,java中的启动方法必须命名为main,并且必须具有特定的签名public static void main(String[] args)

该代码还告诉我们,public static void main(String[] args)不是固定的,如果你将(jdk-src\j2se\src\share\bin\java.c)中的代码更改为另一个签名,它将工作,但更改这将给你带来其他可能的问题,因为java 规格

自从OP问这个问题已经7年了,我猜OP现在可以回答他自己的问题了。

我会分手

public static void main(String args[])

在部分。

“公共”意味着main()可以从任何地方调用。

“静态”意味着main()不属于特定对象

“空白”表示main()不返回任何值

“主要”是一个函数的名字。Main()是特殊的,因为它是程序的开始。

“[]”表示String数组。

“参数”是String[]的名称(在main()函数体中)。"args"不是特殊的;你可以给它取任何别的名字,程序还是一样的。

  • String[] args是一个字符串的集合,用空格分隔,可以在终端上输入程序。很多时候,初学者不会使用这个变量,但它总是存在,以防万一。

下面的答案是基于我的理解&一些测试。

String[] args是什么?

答:

String[]→我们知道这是一个简单的String数组。

args→是数组的名称,它可以是任何东西(例如,a, ar,参数,参数)没有问题编译器&执行,我也做了测试。

例句:

  1. < p > public static void main(String[] argument)

  2. < p > public static void main(String[] parameter)

什么时候使用这些参数?

Ans→

main函数被开发人员设计得非常聪明。实际思考是很深刻的。这基本上是在C &基于命令行参数的c++,但现在没有人更多地使用它。

1 -用户可以从命令行输入任何类型的数据,可以是数字或字符串。必须接受它的编译器,我们应该使用哪种数据类型?看东西2

2 - String是Java中支持所有基本数据类型的数据类型,如int, long, float, double, byte, shot, char。您可以轻松地以任何基本数据类型解析它。

下面的程序被编译&执行,我也做了测试。

如果输入是->1

// one class needs to have a main() method
public class HelloWorld
{
// arguments are passed using the text field below this editor
public static void main(String[] parameter)
{
System.out.println(parameter[0] + parameter[1]); // Output is 11


//Comment out below code in case of String
System.out.println(Integer.parseInt(parameter[0]) + Integer.parseInt(parameter[1])); //Output is 2
System.out.println(Float.parseFloat(parameter[0]) + Float.parseFloat(parameter[1])); //Output is 2.0
System.out.println(Long.parseLong(parameter[0]) + Long.parseLong(parameter[1])); //Output is 2
System.out.println(Double.parseDouble(parameter[0]) + Double.parseDouble(parameter[1])); //Output is 2.0


}
}

除了前面所有的评论。

public static void main(String[] args)

可以写成

 public static void main(String...arg)

 public static void main(String...strings)

String[] args参数是一个字符串数组,当你在操作系统中通过命令行运行应用程序时,它作为参数传递。

因此,假设你已经编译并打包了一个myApp.jar Java应用程序。当然,你可以在操作系统中双击应用程序来运行应用程序,但你也可以使用命令行方式运行它,比如(在Linux中):

user@computer:~$ java -jar myApp.jar

当你调用你的应用程序传递一些参数时,比如:

user@computer:~$ java -jar myApp.jar update notify

java -jar命令将你的字符串updatenotify传递给你的public static void main()方法。

然后你可以这样做:

System.out.println(args[0]); //Which will print 'update'
System.out.println(args[1]); //Which will print 'notify'

String[] args表示一个字符序列数组(字符串),传递给&;main&;函数。这发生在程序执行时。

例如,当你通过命令行执行Java程序时:

java MyProgram This is just a test

因此,数组将存储:["This", "is", "just", "a", "test"]

试试这个:

System.getProperties().getProperty("sun.java.command",
System.getProperties().getProperty("sun.rt.javaCommand"));

您也可以使用下面的语法。

public static void main(String... args)

这里省略,即数据类型String后面的三个点指定零个或多个参数(参数数量可变)。