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

public static void main(String[] args)

什么是字符串[]参数? 什么时候使用这些参数?

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


当前回答

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

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

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

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

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

java -jar命令将你的Strings更新和通知传递给你的公共静态void main()方法。

然后你可以这样做:

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

其他回答

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

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

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

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

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

java -jar命令将你的Strings更新和通知传递给你的公共静态void main()方法。

然后你可以这样做:

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

即使OP只是谈论String[]参数,我想给出一个完整的公共静态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)

代码还告诉我们,公共静态void main(String[] args)是不固定的,如果你改变(jdk-src\j2se\src\share\bin\java.c)中的代码到另一个签名,它会工作,但改变这将给你其他可能的问题,因为java规范

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

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

什么是字符串[]参数?

Ans:

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

args ->是一个数组的名字,它可以是任何东西(例如,a, ar,参数,参数)编译器和执行没有问题,我也测试了。

E.g:

public static void main(String[]参数) public static void main(String[]参数)

什么时候使用这些参数?

nsa - >

开发人员非常聪明地设计了主要功能。实际思考是很深刻的。它基本上是在C和c++基于命令行参数的考虑下开发的,但现在没有人更多地使用它。

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

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

例:下面的程序已经编译并执行了,我也进行了测试。

输入为-> 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 [])

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

java MyClass a b c

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

String[] args表示传递给“main”函数的字符序列数组(字符串)。这发生在程序执行时。

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

这只是一个测试

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