本節(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:
當(dāng)源碼的文件名和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的使用方法在以后會詳細講解