在每一个学习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);
}
}
推荐好课: