为什么java需要静态类_为什么Java主要方法是静态的?
小編典典
只是約定。實(shí)際上,即使名稱main()和傳入的參數(shù)也完全是約定俗成的。
當(dāng)您運(yùn)行java.exe(或Windows上的javaw.exe)時(shí),實(shí)際上發(fā)生了幾次Java本機(jī)接口(JNI)調(diào)用。這些調(diào)用將加載真正是JVM的DLL(是的-java.exe不是JVM)。JNI是我們在橋接虛擬機(jī)世界以及C,C ++等世界時(shí)使用的工具。反之亦然-至少(據(jù)我所知)不可能真正獲得JVM在不使用JNI的情況下運(yùn)行。
基本上,java.exe是一個(gè)超級簡單的C應(yīng)用程序,它解析命令行,在JVM中創(chuàng)建一個(gè)新的String數(shù)組來保存這些參數(shù),解析出您指定為包含main()的類名,使用JNI調(diào)用來查找main()方法本身,然后調(diào)用main()方法,將新創(chuàng)建的字符串?dāng)?shù)組作為參數(shù)傳入。這非常類似于使用Java反射時(shí)所執(zhí)行的操作-它只是使用容易混淆的命名本機(jī)函數(shù)調(diào)用。
編寫自己的java.exe版本(源代碼隨JDK分發(fā))并讓它執(zhí)行完全不同的操作,這是完全合法的。實(shí)際上,這正是我們對所有基于Java的應(yīng)用程序所做的事情。
我們每個(gè)Java應(yīng)用程序都有自己的啟動器。我們主要這樣做是為了獲得自己的圖標(biāo)和進(jìn)程名稱,但是在其他情況下,除了常規(guī)的main()調(diào)用以外,我們還想做些其他事情以方便處理(例如,在一種情況下, COM互操作性,我們實(shí)際上將COM句柄傳遞給main()而不是字符串?dāng)?shù)組)。
所以,長話短說:它是靜態(tài)的原因是方便的b / c。之所以稱其為“ main”,是因?yàn)樗仨毷悄撤N東西,而main()是它們在C的早期(以及那時(shí),函數(shù)名很重要)所做的事情。我想java.exe可以允許您只指定一個(gè)完全限定的主方法名稱,而不是僅指定類(java com.mycompany.Foo.someSpecialMain)-但這使IDE很難自動檢測“項(xiàng)目中的“可啟動”類。
2020-02-27
總結(jié)
以上是生活随笔為你收集整理的为什么java需要静态类_为什么Java主要方法是静态的?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java下载本地目录excel_java
- 下一篇: java美元兑换,(Java实现) 美元