App下載

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

猿友 2021-01-11 16:15:15 瀏覽數(shù) (6456)
反饋

在每一個(gè)學(xué)習(xí)Java的同學(xué),都應(yīng)該寫(xiě)過(guò)下面的這一段代碼。
public class Hello{
	public static void main(String[] args) {
		System.out.println("Hello,World!");
	}
}

在Java語(yǔ)言中,規(guī)定了入口函數(shù)是一個(gè)main()方法,該方法有一個(gè)String[]類(lèi)型的參數(shù),但是在很多時(shí)候,很多人都使用不上這個(gè)參數(shù),也不關(guān)心為什么要寫(xiě)這個(gè)參數(shù)。

那么這個(gè)字符串?dāng)?shù)組類(lèi)型的參數(shù)究竟是什么東西呢?

其實(shí)很簡(jiǎn)單,main()方法中的字符串?dāng)?shù)組類(lèi)型的參數(shù)就是java命令的參數(shù),使用java命令的方式運(yùn)行main()方法,會(huì)將java命令的參數(shù)入?yún)⒌絁ava main()方法的字符串?dāng)?shù)組參數(shù)中。

我們可以通過(guò)以下方式來(lái)進(jìn)行驗(yàn)證:

  • 1、先編寫(xiě)一個(gè)Hello.java文件,文件內(nèi)容如下:
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文件的路徑下打開(kāi)cmd命令提示符,運(yùn)行javac Hello.java命令編譯該文件,這將會(huì)在對(duì)應(yīng)的文件路徑下,得到一個(gè)Hello.class字節(jié)碼文件。
  • 3、使用java Hello命令運(yùn)行Hello.class文件,我們將會(huì)得到如下的運(yùn)行結(jié)果:
    -
  • 4、我們這次在java命令后面添加一些參數(shù),這些參數(shù)我們可以自己定義。例如:java Hello a b c d ,我們將會(huì)得到如下的運(yùn)行結(jié)果:
  • 在這里插入圖片描述
正是因?yàn)镴ava main()方法的這個(gè)擴(kuò)展性,使得每一個(gè)開(kāi)發(fā)者,可以通過(guò)自己定義一些Java命令的參數(shù),實(shí)現(xiàn)一些不同的功能。

其中SpringBoot的啟動(dòng)類(lèi),其實(shí)也使用了這個(gè)特性,SpringApplication.run()方法有一個(gè)重載方法,其中第一個(gè)入?yún)⒌氖亲⒔饬薂SpringBootApplication注解的類(lèi)的字節(jié)碼對(duì)象,而第二個(gè)參數(shù),即為main()方法的字符串?dāng)?shù)組參數(shù)。

SpringBoot可以通過(guò)這個(gè)字符串?dāng)?shù)組參數(shù),通過(guò)java命令參數(shù)的方式,在不同的環(huán)境下實(shí)現(xiàn)不同的應(yīng)用配置。

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

推薦好課:

Java:23天零基礎(chǔ)完全入門(mén)

Java開(kāi)發(fā)實(shí)例:坦克大戰(zhàn)游戲


2 人點(diǎn)贊