什么是“string参数”? 主要方法Java中的参数

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

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

  • 你什么时候使用这些args

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

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

换句话说,如果你运行你的程序作为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]); } } } 

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

换句话说,如果你运行

java MyProgram一二

然后args包含:

[ “一二” ]

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

这样做的原因是configuration你的应用程序运行一个特定的方式或提供它需要的一些信息。


如果您不熟悉Java,则强烈build议阅读Oracle的Java TM教程 。

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

 $ java MyProg -f file.txt 

然后args将是一个包含string"-f""file.txt"的数组。

String [] args也是如何在Java中声明一个string数组。

在这个方法签名中,当调用方法时,数组args将被填充值(如其他示例所示)。 既然你在学习,那么值得理解,这个args数组就像你自己在一个方法中创build一个一样,就像这样:

 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 } 

下面的答案是基于我的理解和一些testing。

什么是String []参数?

Ans->

String [] – >因为我们知道这是一个简单的String数组。

args – >是一个数组的名称,它可以是任何东西(例如,a,ar,argument,param,参数)没有问题与编译器&执行&我也testing。

例如
1)public static void main(String [] argument)

2)public static void main(String [] parameter)

你什么时候使用这些参数?

Ans->

主要function是由开发人员非常智能地devise的。 实际的思维非常深刻。 这基本上是基于命令行参数考虑C&C ++而开发的,但现在没有人使用它。

事情1-用户可以从命令行input任何types的数据可以是数字或string&必要的接受它由编译器我们应该使用的数据types? 看到的东西2

事物2-string是支持Java中的所有基本数据types(如int,long,float,double,byte,shot,char)的数据types。 你可以很容易地parsing它在任何原始数据types。

例如下面的程序被编译和执行,我也testing过。

如果input是 – > 1 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 } } 

当从控制台执行一个java类时,main方法就是所谓的。 为了做到这一点,这个主要方法的定义必须是

 public static void main(String []) 

这个string数组被称为args的事实是一个标准的约定,但并不是严格要求的。 你可以在你调用你的程序的时候在命令行填充这个数组

 java MyClass abc 

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

当你完成你的代码时,你将把它变成一个扩展名为.java的文件,它可以通过双击运行,也可以在控制台(mac上的terminal,Windows上的cmd.exe)很多东西。 有一件事是他们可以看到控制台消息(System.out.print或System.out.println),他们不能看到他们双击。 他们可以做的另一件事是指定参数,所以通常你会使用该行

 java -jar MyCode.jar 

导航到程序的文件夹后

 cd C:My/Code/Location 

在窗口或

 cd My/Code/Location 

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

 java -jar MyCode.jar parameter1 parameter2 

这些参数存储在args数组中,您可以在程序中使用这些参数,您希望允许用户控制特定的参数,例如要使用的文件或程序可以具有多less内存。 如果你想知道如何使用一个数组,你可能会在这个网站上find一个主题,或者只是谷歌。 请注意,可以使用任何数量的参数。

我认为上面的答案已经很好的涵盖了String args[]只是一个string参数的数组,当你运行它时,你可以传递给你的应用程序。 为了完成,我可以补充说,将传递给main方法的方法参数定义为Stringtypes的variables参数(可变参数)也是有效的:

public static void main (String... args)

换句话说, main方法必须接受一个String数组( String args[] )或者varargs( String... args )作为方法参数。 而且名字args也没有魔法。 你可能还会写下如下所示的arguments ,甚至是freddiefujiwara:e.gs .:

public static void main (String[] arguments)

public static void main (String[] freddiefujiwara)

public static void main(String args []) args是数据types为String的控制台行参数的数组。 在这个数组中,可以通过在命令行中调用它们来存储各种string参数,如下所示: java myProgram Shaan Royal Shaan and Royal将作为arg [0] =“Shaan”存储在数组中。 ARG [1] = “皇家”; 您也可以在程序内部手动执行此操作,而不在命令行调用它们。

简单的外行人的语言解释。

主要方法期望我们提供一些参数,当我们把我们的JVM的类名称。 这意味着,假设你的文件名是Try.java,现在要在命令提示符下执行这个命令,编写“javac Try.java”进行编译,然后执行“java Try”。 现在假设不是简单地写“java try”,而是写“java try 1”。 在这里你已经传递了一个参数“1”。 即使你没有在你的代码中使用它,这也会被你的主要方法所采用。

如果你想检查你的main方法是否实际上采用了参数“1”。 简单地说,在你的主要方法中键入以下内容:

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

我会分手

 public static void main(String args[]) 

在部分。

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

“static”意味着main()不属于特定的对象

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

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

“String []”表示String的数组。

“args”是String [](在main()的主体内)的名称。 “args”并不特别; 你可以把它命名为其他任何东西,程序也是一样的。

  • String[] args是一个由空格分隔的string的集合,可以input到terminal的程序中。 更多的时候,初学者不会使用这个variables,但它总是在那里以防万一。

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

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

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

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

Void :用于定义方法的返回types。 它定义了该方法可以返回的内容。 Void意味着方法不会返回任何值。

main :是Method的名字。 此方法名称由JVMsearch,仅作为具有特定签名的应用程序的起点。

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 规格

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