Java 主函數 main 中的關鍵字 static


相信很多人在運行第一個可以運行的 Java 程序的時候都會要求寫一個主函數。

然后很多人都會照葫蘆畫瓢的寫一個下面的函數:

public static void main(String[] args) { } 

IJ 甚至非常貼心的給你 main 的代碼提示:

 

 

這個函數里面有幾個定義和關鍵字,估計可能會有些繞,和為什么這么寫?

近期在學習的時候才翻出來再看看,其中可能比較難理解的是關鍵字 static

public

這個關鍵字在這個函數中很好理解,就是表示這個函數是可以被其他類訪問到。

void

表示這個函數不返回任何數據。

這個也比較好理解,因為這個函數是主程序的入口,通常是不需要返回結果的。使用 void 也沒關系。

String[] args

這個表示的是這個函數可以從執行的時候獲得的輸入參數。

就是告訴這個函數在執行的時候,你可以在命令行中定義一些參數,然后這個函數通過獲得這些參數來對運行進行調整。

通常我們對輸入參數的控制會使用。

Apache 的 commons-cli-1.4.jar 來進行處理,因為這個 API 幫我解決了對出入參數進行處理的常用方法,能夠簡化我們的操作。

這個內容我們在其他地方再單獨拿出來說。

static

這個就是我們需要說明一下的重點了。

我們都知道 static 是表示靜態的意思,為什么在 main 函數里面需要靜態關鍵字修飾?

static 主要用途是告訴編譯器 main 函數是一個靜態函數。同時也就是說main 函數中的代碼是存儲在靜態存儲區的,即當定義了類以后這段代碼就已經存在了。

這個所謂的靜態存儲區,就是我們常說 JVM 中的堆(Heap),這個 Heap 就是 JVM 垃圾回收管理的區域,也是你經常看到內存溢出的區域。

static關鍵字主要用於內存管理。我們可以應用 ava static關鍵字在變量,方法,塊和嵌套類中。 static關鍵字屬於類,而不是類的實例。

被 static 關鍵字修飾的不需要創建對象去調用,直接根據類名就可以去訪問。

在 main() 方法中使用靜態(static)這個關鍵字,JVM 將會為這個方法開辟內存空間,你不需要對這個方法進行實例化,因此能夠節省不必要的開銷。

如果 main 方法不聲明為靜態的,JVM 就必須創建main類的實例,因為構造器可以被重載,JVM就沒法確定調用哪個 main 方法。

因此,在這里這個 static 關鍵字是必須要有的,否則你的程序可以編譯,但是無法運行。

如果使用上面的代碼:

public void main(String[] args) { System.out.println("RUN"); } 

運行的時候將會有錯誤:

Error: Main method is not static in class com.ossez.codebank.algorithm.Main, please define the main method as: public static void main(String[] args) Process finished with exit code 1

但是編譯是不會有錯誤的。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM