本節(jié)主要內(nèi)容:
Hello word 細(xì)節(jié)說明
源碼總結(jié)
命令解析
思考回答
1.Hello word 細(xì)節(jié)說明
Hello Word源碼:
1:public static void main(Stirng[] args){}:main函數(shù)說明猛蔽。
任何一個程序(事物)都需要有個起始點僻他。
無論程序(事物)有多繁瑣(復(fù)雜)都會有個入口開始鼻由。一行一行讀取的。
在java(java基礎(chǔ))中程序的入口就是這個main函數(shù)。
2:system.out.println(“hello word”);為什么寫在main函數(shù)的大括號內(nèi)形帮?
因為main函數(shù)是程序的入口瑟啃,如果其他代碼想要被執(zhí)行就需要在main函數(shù)里面。
這樣职恳,進(jìn)門后就可以一行一行的往下讀取執(zhí)行了所禀。
3:mian函數(shù)是被誰執(zhí)行的?
java源碼編譯后的class文件是被java虛擬機(jī)也就是JVM來執(zhí)行的话肖。所以main函數(shù)是被java虛擬機(jī)執(zhí)行的北秽。
注意:如果java虛擬機(jī)在class文件中沒有找到mian方法會報錯。
源碼總結(jié):
1:main函數(shù)是程序的入口
2:main函數(shù)是被java虛擬機(jī)執(zhí)行的
3:一個類有了main函數(shù)后就可以獨立運行了最筒。
命令解析:
javac命令:
語法一:javac + 空格 + 文件名+java后綴的
這個命令是對外提供的編譯命令贺氓,在執(zhí)行該命令后,會調(diào)用JVM的編譯程序?qū)χ付ㄎ募M(jìn)行編譯。
所以命令方式之一就是:javac + 空格 + 文件名+java后綴的辙培。
注意:javac 只能編譯以 .java為后綴的文件蔑水。
這個命令啟動之后,對命令后面接的java文件進(jìn)行檢查扬蕊,看看是否存在語法上錯誤搀别。其實就是檢測源代碼正確性。
測試:在上一節(jié)demo1.java源碼中將system.out.println(“”);后面的冒號去掉后尾抑,使用javac 命令歇父。
會很清晰的告訴我們在demo1.java文件的第3行需要分號。并且指明位置了再愈。
java 命令:
語法:java +空格 + class文件名不帶后綴榜苫。
這個命令是運行程序的
這個命令對應(yīng)的底層就是java的虛擬機(jī)。
在輸入java demo3回車后翎冲,才啟動java的虛擬機(jī)(JVM)垂睬。
java demo3解釋:使用java命令啟動JVM,然后執(zhí)行名稱為demo3的class文件。所以在java命令只需要寫class的名稱即可抗悍。
JVM會在指定位置(既是:E:\凱哥錄制\java基礎(chǔ)教程\day01\code)下查找名稱為demo3.class的文件驹饺。然后將該文件加載到內(nèi)存中。加載完成后缴渊,先查找該文件中有沒有主函數(shù)(main函數(shù))如果沒找到就會報錯赏壹。如果找到了,就會從主函數(shù)下手(從主函數(shù)入口疟暖,執(zhí)行主函數(shù)大括號里面包括的代碼卡儒。所以,目前將代碼都寫到主函數(shù)里面俐巴。以后骨望,會有其他方式。)
總結(jié):
javac 命令是編譯期使用的欣舵。使用該命令是對源代碼進(jìn)行語法等檢查擎鸠。如果沒有錯誤就生成對應(yīng)類名的class文件。如果有錯誤缘圈,就將錯誤信息報出來劣光。
java 命令是執(zhí)行期使用的。使用該命令會糟把,會將JVM啟動绢涡,然后有JVM將對應(yīng)的class文件加載到內(nèi)存中運行。
上節(jié)思考解答7:
當(dāng)源碼的文件名和class類名不一致會出現(xiàn)什么情況遣疯?
情況一:
源碼中使用了public 來修飾類的雄可。也就是在class前面添加了public這個單詞
文件名:
class類名為:
使用javac demo2.java會出現(xiàn)如下錯誤:
意思是:類名為demo1的需要有個demo1.java的文件名。
修改類名為demo2.再次使用javac進(jìn)行編譯。
OK編譯通過数苫。
現(xiàn)在執(zhí)行java命令:
我們可以看到聪舒。輸出了hello word和你好世界!虐急。
如果有大于一個的main函數(shù)會出現(xiàn)什么問題箱残?
提示我們,已經(jīng)在demo2中定義了main函數(shù)止吁。
總結(jié):
一個類中只有小于等于一個main函數(shù)被辑。也就是說一個類可以沒有main函數(shù)(這個在以后會講解到)或者如果有僅且只有一個main函數(shù)。但是system.out.println();可以有多個赏殃。
情況二:
在class前面沒有使用public修飾符進(jìn)行修飾敷待。也就是在class前面沒有添加public。
其中文件名稱為:
里面內(nèi)容為:
class demo3{
public static void main(String [] args){
System.out.println("hello word");
System.out.println("你好世界仁热!");
}
}
在使用javac命令進(jìn)行編譯:
編譯通過。查看編譯后的class文件:
變成了demo3而不是abc勾哩。查看源碼我們發(fā)現(xiàn)抗蠢,demo3就是class的類名。所以經(jīng)過javac編譯之后生成的class文件名稱就是類名思劳。所以迅矛,一般我們在問java源碼(*.java)文件起名就是類名。
說明:
關(guān)于修飾符public的使用方法在以后會詳細(xì)講解