從零學java筆錄-第4篇 Hello word 細節(jié)說明

本節(jié)主要內(nèi)容:

Hello word 細節(jié)說明

源碼總結(jié)

命令解析

思考回答

1.Hello word 細節(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ù)里面。

這樣,進門后就可以一行一行的往下讀取執(zhí)行了。

3:mian函數(shù)是被誰執(zhí)行的?

java源碼編譯后的class文件是被java虛擬機也就是JVM來執(zhí)行的。所以main函數(shù)是被java虛擬機執(zhí)行的。

注意:如果java虛擬機在class文件中沒有找到mian方法會報錯。

源碼總結(jié):

1:main函數(shù)是程序的入口

2:main函數(shù)是被java虛擬機執(zhí)行的

3:一個類有了main函數(shù)后就可以獨立運行了。

命令解析:

javac命令:

語法一:javac + 空格 + 文件名+java后綴的

這個命令是對外提供的編譯命令,在執(zhí)行該命令后,會調(diào)用JVM的編譯程序?qū)χ付ㄎ募M行編譯。

所以命令方式之一就是:javac + 空格 + 文件名+java后綴的。

注意:javac 只能編譯以 .java為后綴的文件。

這個命令啟動之后,對命令后面接的java文件進行檢查,看看是否存在語法上錯誤。其實就是檢測源代碼正確性。

測試:在上一節(jié)demo1.java源碼中將system.out.println(“”);后面的冒號去掉后,使用javac 命令。

會很清晰的告訴我們在demo1.java文件的第3行需要分號。并且指明位置了。

java 命令:

語法:java +空格 + class文件名不帶后綴。

這個命令是運行程序的

這個命令對應(yīng)的底層就是java的虛擬機。

在輸入java demo3回車后,才啟動java的虛擬機(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 命令是編譯期使用的。使用該命令是對源代碼進行語法等檢查。如果沒有錯誤就生成對應(yīng)類名的class文件。如果有錯誤,就將錯誤信息報出來。

java 命令是執(zhí)行期使用的。使用該命令會,會將JVM啟動,然后有JVM將對應(yīng)的class文件加載到內(nèi)存中運行。

上節(jié)思考解答7:

當源碼的文件名和class類名不一致會出現(xiàn)什么情況?

情況一:

源碼中使用了public 來修飾類的。也就是在class前面添加了public這個單詞

文件名:

class類名為:

使用javac demo2.java會出現(xiàn)如下錯誤:

意思是:類名為demo1的需要有個demo1.java的文件名。

修改類名為demo2.再次使用javac進行編譯。

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修飾符進行修飾。也就是在class前面沒有添加public。

其中文件名稱為:

里面內(nèi)容為:

class demo3{

public static void main(String [] args){

System.out.println("hello word");

System.out.println("你好世界!");

}

}

在使用javac命令進行編譯:

編譯通過。查看編譯后的class文件:

變成了demo3而不是abc。查看源碼我們發(fā)現(xiàn),demo3就是class的類名。所以經(jīng)過javac編譯之后生成的class文件名稱就是類名。所以,一般我們在問java源碼(*.java)文件起名就是類名。

說明:

關(guān)于修飾符public的使用方法在以后會詳細講解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容