Java main方法中的String[] args详解

猿友 2021-01-11 16:15:15 浏览数 (5728)
反馈

在每一个学习Java的同学,都应该写过下面的这一段代码。
public class Hello{
	public static void main(String[] args) {
		System.out.println("Hello,World!");
	}
}

在Java语言中,规定了入口函数是一个main()方法,该方法有一个String[]类型的参数,但是在很多时候,很多人都使用不上这个参数,也不关心为什么要写这个参数。

那么这个字符串数组类型的参数究竟是什么东西呢?

其实很简单,main()方法中的字符串数组类型的参数就是java命令的参数,使用java命令的方式运行main()方法,会将java命令的参数入参到Java main()方法的字符串数组参数中。

我们可以通过以下方式来进行验证:

  • 1、先编写一个Hello.java文件,文件内容如下:
public class Hello{
	public static void main(String[] args) {
		System.out.println("==============args start============");
		for(int i = 0; i < args.length; i++) {
			System.out.println(args[i]);
		}
		System.out.println("==============args end============");
	}
}
  • 2、在Hello.java文件的路径下打开cmd命令提示符,运行javac Hello.java命令编译该文件,这将会在对应的文件路径下,得到一个Hello.class字节码文件。
  • 3、使用java Hello命令运行Hello.class文件,我们将会得到如下的运行结果:
    -
  • 4、我们这次在java命令后面添加一些参数,这些参数我们可以自己定义。例如:java Hello a b c d ,我们将会得到如下的运行结果:
  • 在这里插入图片描述
正是因为Java main()方法的这个扩展性,使得每一个开发者,可以通过自己定义一些Java命令的参数,实现一些不同的功能。

其中SpringBoot的启动类,其实也使用了这个特性,SpringApplication.run()方法有一个重载方法,其中第一个入参的是注解了@SpringBootApplication注解的类的字节码对象,而第二个参数,即为main()方法的字符串数组参数。

SpringBoot可以通过这个字符串数组参数,通过java命令参数的方式,在不同的环境下实现不同的应用配置。

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

推荐好课:

Java:23天零基础完全入门

Java开发实例:坦克大战游戏


2 人点赞