2009-05-21 79 views

回答

35

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

$ java MyProg -f file.txt 

然后args将是包含字符串"-f""file.txt"阵列。

232

在Java中args包含提供的command-line arguments作为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]); 
     } 
    } 
} 
+34

值得注意的是,`args`不一定被命名为`args`(你可以命名为任何你想要的) - 尽管它最好遵循惯例。您也可能会不时看到`String ... args`,这是等价的。 – vikingsteve 2013-06-20 06:40:13

12

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 
} 
6

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

public static void main(String []) 

,这个字符串数组被称为参数表是一个标准的惯例,但没有严格要求的事实。 whne调用你的程序,你会填充这个数组在命令行

java MyClass a b c 

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

84

这些用于Java中的命令行参数。

换句话说,如果您运行

的java MyProgram一二

然后args包含:

[ “一”, “二”]

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

这样做的原因是配置您的应用程序以运行某个特定项或者提供一些它需要的信息。


如果你是新的Java中,我强烈建议通过官方Oracle的JavaTM Tutorials阅读。

5

公共静态无效主要(字符串ARGS []) ARGS是控制台行参数数据类型为字符串的数组。 这个阵列中,可以通过在命令行调用它们各个字符串参数存储为如下所示: 的java myProgram陕皇家 然后陕和皇家将被存储在阵列中作为 ARG [0] =“陕” ; arg [1] =“皇家”; 您也可以在程序内部手动执行此操作,而不在命令行中调用它们。

7

当你完成你的代码时,你会把它变成一个扩展名为.java的文件,它可以通过双击运行,但也可以在控制台(Windows上的终端,Windows上的cmd.exe)让用户做很多事情。有一件事是他们可以看到控制台消息(System.out.print或System.out.println),他们无法看到他们是否双击。他们可以做的另一件事是指定参数,那么通常你会浏览到该程序的文件夹

cd C:My/Code/Location 

在Windows或

cd My/Code/Location 

后用线

java -jar MyCode.jar 

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

java -jar MyCode.jar parameter1 parameter2 

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

6

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

public static void main (String... args)

换句话说,该main方法必须接受要么一个字符串数组(String args[])或可变参数(String... args)作为方法的参数。并且没有名字args的魔术。你还不如写arguments甚至freddiefujiwara如下所示e.gs:

public static void main (String[] arguments)

public static void main (String[] freddiefujiwara)

3

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

4

说明简单深入浅出。

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

如果要检查你的主要方法是否已经实际采取的论点“1”或没有。简单地说,你的主要方法类型中以下内容:

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

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

Public:是Access Modifier,它定义谁可以访问此方法。公共意味着这个方法可以被任何类访问(如果其他类可以访问这个类)。

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

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

main:是方法的名称。该方法名称由JVM搜索,仅作为具有特定签名的应用程序的起点。

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

如果您查看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中starting method必须命名为main,必须有特定的签名public static void main(String[] args)

代码还告诉我们,public static void main(String[] args)是不固定的,如果你改变了代码在(JDK-SRC \ J2SE的\ src \共享\ BIN \ java.c)到另一个签名,它可以工作,但改变这会给你因为Java specs

Offtopic其他可能出现的问题:它已经自从OP问这个问题7年来,我的猜测是OP现在可以回答他自己的问题。

4

我会在部分分手

public static void main(String args[]) 

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

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

“空隙”意味着主()没有返回值

“主”是功能的名称。 main()是特殊的,因为它是程序的开始。

“String []”表示String数组。

“args”是String [](在main()的主体内)的名称。 “args”并不特别;您可以将其命名为其他任何内容,并且该程序的工作原理也是一样

  • String[] args是字符串的集合,由一空间,该空间可以被输入到终端上的程序分离。更多的时候,初学者不会使用这个变量,但它总是在那里以防万一。
11

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

什么是String [] args?

Ans->

字符串[] - >如我们知道,这是一个简单的字符串数组。

ARGS - >是一个数组它可以是任何东西(例如,AR,自变量,PARAM,参数)与执行&编译&没有问题我测试以及名称。

E.g.
1)公共静态无效的主要(字符串[]参数)

2)公共静态无效的主要(字符串[]参数)

当你使用这些ARGS?

Ans->

主要功能是由开发者设计非常智能。实际的思维非常深刻。 这基本上是基于C++基于C++编写的基于命令行参数的C++开发的,但现在没人使用它。

事情1-用户可以在命令行中输入任何类型的数据可以是数字或字符串&必要的编译器,其数据类型来接受它,我们应该使用?看到的东西2

东西2-字符串是支持Java中的所有基本数据类型像int,long,float,double,byte,shot,char的数据类型。你可以在任何原始数据类型中轻松解析它。

E.g下面的程序编译为&执行&我也测试过了。

如果输入 - > 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  

    } 
} 
相关问题