02_1第一個程序

本文小結

1 完成第一個JAVA 程序
2 對第一個程序細節(jié)了解
3 JAVA 程序執(zhí)行的過程了解

前情回顧
小輝輝和博仔幾個已經(jīng)完成了JAVA環(huán)境的安裝。也完成了測試。萬事俱備只欠東風练湿。
周鵬程:確實萬事俱備只欠東風。都劃水好幾集了审轮,說什么也該我出場了吧肥哎。今天說什么都要好好整理以下。畢竟預習不易疾渣,且行且凡爾賽篡诽。
叮咚,叮咚稳衬。
小舒:周鵬程霞捡,預習完了吧,敲出第一個代碼了嘛薄疚,怎么做啊碧信,我有點沒弄清楚。
周鵬程:hahaha 機會來了街夭。"第一個代碼啊砰碴,很簡單啊,來來來我告訴你板丽,先不管三七二十一 呈枉,直接干出一段代碼來"

 class HelloWorld{
  public static void main(String[] args){
    System.out.println("hello world"); 
}
}

小舒:代碼是出來了,要怎么運行咧埃碱,運行出來又是個啥咧猖辫?
周鵬程:這個簡單。上圖??
1 在桌面建立一個tex的文件夾砚殿。


HelloWorld文本文件.png

小舒:我后面怎么沒有.txt的后綴翱性鳌?
周鵬程:這個是為了防止用戶不小心修改了這個后綴造成文件損壞而故意設計的似炎。我們可以這樣去打開辛萍。

打開后綴名

打開任意盤符悯姊。選中查看。這里就想到與選擇了其中一個文件對查看這個屬性進行修改贩毕。只要選擇勾選上文件拓展名即可讓后綴名顯示了悯许。


image.png

小舒:好的,我的打開了辉阶。接下來是個什么操作先壕。
周鵬程:照著把剛剛那段東西打上去即可。如圖??


HelloWorld文件.png

小舒:這也簡單睛藻。接下來咧启上,不用停下來。
周鵬程:那我可要開始咯店印。
右鍵重命名。


修改后綴名.png

接著無視即可倒慧。


忽略.png

進入cmd


打開當前面板.png

小舒:等一下按摘,等一下,為啥進入cmd?
周鵬程:cmd 可以調用命令啦纫谅,你可別忘記了JAVA的運行是需要經(jīng)過兩個步驟的炫贤。我們這里得到的是.java的文件。還需要把他們變成.class文件付秕,.exe文件咧兰珍。

小舒:哦這樣啊,你繼續(xù)询吴,
周鵬程:如下操作即可??


進入cmd窗口.png

這里已經(jīng)到達了當前的.java位置掠河。可以使用javac把.java文件編譯成.class文件猛计。因為上節(jié)已經(jīng)講到了唠摹,我們把環(huán)境變量進行了配置。
執(zhí)行javac命令奉瘤,如果當前文件沒有勾拉,就會去環(huán)境變量去找對應的位置。因為已經(jīng)完成了配置盗温,所以這里可以進入bin中找到javac這條命令藕赞。
小舒:哦,上節(jié)課原來是這個原理啊卖局。懂了斧蜕,懂了。
然后執(zhí)行如下即可吼驶。
javac HelloWorld.java 意思是javac(編譯)HelloWorld.java(名字是HelloWorld.java的文件)
javac.png

ps:這里可以用Tab鍵進行補充惩激,還不錯哦店煞。真的超強。

最后一步:java HelloWorld 即可风钻。


image.png

小舒:好的顷蟀,我的第一個程序也跑起來了。但是我不知道為啥骡技∶觯可以幫我解釋一下這個程序吧。
周鵬程:ok布朦,那我一句一句給你解釋吧囤萤。

1 class HelloWorld{
2   public static void main(String[] args){
3   System.out.println("hello world"); 
4 }
5 }

不知道你發(fā)現(xiàn)了沒,這個代碼是非常對稱的是趴√紊幔可以簡化一下。

class HelloWorld{
}
這是最大的一個整體唆途。里面包含了如下
public static void main(String[] args){
}
在這個里面又包含了
System.out.println("hello world");
小舒:哎呀富雅,好像確實是這樣的咧。有點意思哦肛搬。
周鵬程:okok,那我直接開始講了哦没佑。由這個可以得出,{}可以作為一個整體温赔。里面可以包含東西蛤奢,這個稱之為代碼塊。

class 是JAVA的關鍵字陶贼,表示接下來的一部分是類啤贩。{}里面全部是類的內容。
其中緊跟著的是類名骇窍。這就很好理解了瓜晤。

class HelloWorld{} 有一個名字叫HelloWorld的類。這里懂了吧腹纳。
小舒:這里懂了痢掠,對了,我發(fā)現(xiàn)這個文件名字好像也是這個嘲恍,這個是巧合還是可以隨便亂寫足画?

周鵬程:這就很有覺悟咯。這是因為java的源文件命名規(guī)則佃牛。

java源文件的命名規(guī)則是這樣的:如果源文件中有多個類淹辞,那么只能有一個類是public類;如有有一個類是public類俘侠,那么源文件的名字必須與這個類的名字完全相同象缀,擴展名是.java蔬将;如果源文件沒有public類,那么源文件只要和某個類的名字相同央星,并且擴展名是.java就可以了霞怀。

知道我為啥沒有加public了吧。
小舒:確定不是忘記了莉给?
周鵬程:算了那不重要毙石。我們來做以下實驗。 
實驗1 :驗證文件名字和類名是否需要統(tǒng)一颓遏。(這里先不加public)
對照組1_1:編寫類為HelloWorld徐矩,文件名字為HelloWorld的文件,看是否會報錯叁幢。
對照組2_1: 編寫類為HelloWorld滤灯,文件名字為HelloWorlds的文件,看是否會報錯曼玩。

對照組1_1 :


1_1 helloworld.png

對照實驗1_2.


i對照組1_2.1.png

編譯未出錯;
運行的時候出錯誤力喷。

運行出錯1_2.2.png

實驗一小結

對照組1 沒用使用public,文件名字和類名一致演训。所以編譯成功,運行成功贝咙。
對照組2 沒有使用public,文件名字和類名不一致样悟。編譯成功,運行失敗庭猩,原因是沒有找到主類窟她。

小舒:所以那個報錯的原因是什么?
周鵬程:這個啊蔼水,因為main是程序的入口震糖,系統(tǒng)根據(jù)文件名去找對應的類,因為我們對照組2讓文件名和類名不一致了趴腋。所以這里是不存在和文件名同名的類且包含main方法的吊说。對了,main是程序的入口优炬。所以這個一定是不能變的颁井。
小舒:這里的public 是什么意思,會對后面的執(zhí)行有影響嘛蠢护。
周鵬程:有的雅宾,我們來看第二個實驗。

對照組2_1:文件名 HelloWorld 類名HelloWorld 加public


image.png

對照組2_2:文件名字 HelloWorld 類名 HelloWorlds 加public


image.png

小舒:哇葵硕,居然這么神奇啊眉抬」嵯牛看來這個public 還是很有用的嘛。這么說蜀变,一個文件里面是可以有多個類存在的是吧悄谐?
周鵬程:是的,來看下一個實驗昏苏。

對照組3_1:當類名和文件名相同的時候尊沸。


多個類同一個源文件中

出現(xiàn)了兩個.class 文件。說明這個在編譯的時候是有幾個類就完成幾個類的編譯贤惯。


javac之后.png

ok了洼专,差不多了,可以把上述進行一個完整的小結了孵构。

說白了屁商,就是源文件的命名規(guī)則。記住以下幾點即可颈墅。

1  如果源文件中有多個類蜡镶,只能有一個類被public修飾。出現(xiàn)的錯誤為實驗2_2恤筛。
被public 修飾的類必須放在同名文件夾中官还。就這就好了,你只有一個文件毒坛,就不要想放兩個public 修飾的東西望伦。
2 main方法是函數(shù)的入口。且不要對上面的東西做什么修改煎殷。至于原因屯伞,稍后馬上呈上。
3 其實把我建議一個文件夾下面就寫一個類豪直,他不香嘛劣摇?

對了,這個是第一個文件出現(xiàn)的一些問題小結弓乙。


第一個程序常見幺蛾子.png
修改main方法報錯圖片.png

一個程序的執(zhí)行到底經(jīng)歷了啥

想要了解一個程序的執(zhí)行過程末融,我們需要去了解我們上節(jié)課的老朋友,JDK唆貌。
JDK 是由JRE和編譯器等相關工具滑潘。
JRE由核心內庫和JVM組成。
JVM 是java虛擬機锨咙,就是他把編譯完成的字節(jié)碼文件變成了可以執(zhí)行的文件语卤。java程序是跑在這個上面的。


image.png

所以簡單點來說就是,我們寫好了一個程序粹舵,調用javac命令會把JDK中的編譯器觸發(fā)完成.java到.class的編譯钮孵。然后java 文件名完成.class文件的運行。這個是由JVM完成的眼滤。所以想要刨祖墳就是要了解JVM巴席,不過我勸你簡單了解一下就好了,耗子尾汁诅需。
再拉回main函數(shù)漾唉。
JVM規(guī)定main函數(shù)作為程序的入口。并做了如下規(guī)定堰塌。
public static void main(String[] args){}
為啥這樣規(guī)定咧赵刑?
由于JVM在運行這個Java應用程序的時候,首先會調用main方法场刑,調用時不實例化這個類的對象般此,而是通過類名直接調用因此需要是限制為public static。目前就此打住吧牵现,后面聊到JVM的時候再進一步铐懊。不然我怕你放棄學習了。

小結

1 Hello world 的程序編寫瞎疼。
2 Hello World 程序常見錯誤科乎。
3 main函數(shù)相關問題。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末贼急,一起剝皮案震驚了整個濱河市喜喂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竿裂,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件照弥,死亡現(xiàn)場離奇詭異腻异,居然都是意外死亡,警方通過查閱死者的電腦和手機这揣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門悔常,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人给赞,你說我怎么就攤上這事机打。” “怎么了片迅?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵残邀,是天一觀的道長。 經(jīng)常有香客問我,道長芥挣,這世上最難降的妖魔是什么驱闷? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮空免,結果婚禮上空另,老公的妹妹穿的比我還像新娘。我一直安慰自己蹋砚,他們只是感情好扼菠,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坝咐,像睡著了一般循榆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畅厢,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天冯痢,我揣著相機與錄音,去河邊找鬼框杜。 笑死浦楣,一個胖子當著我的面吹牛,可吹牛的內容都是我干的咪辱。 我是一名探鬼主播振劳,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼油狂!你這毒婦竟也來了历恐?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤专筷,失蹤者是張志新(化名)和其女友劉穎弱贼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磷蛹,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡吮旅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了味咳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庇勃。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖槽驶,靈堂內的尸體忽然破棺而出责嚷,到底是詐尸還是另有隱情,我是刑警寧澤掂铐,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布罕拂,位于F島的核電站揍异,受9級特大地震影響,放射性物質發(fā)生泄漏聂受。R本人自食惡果不足惜蒿秦,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛋济。 院中可真熱鬧棍鳖,春花似錦、人聲如沸碗旅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祟辟。三九已至医瘫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間旧困,已是汗流浹背醇份。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吼具,地道東北人僚纷。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像拗盒,于是被迫代替她去往敵國和親怖竭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內容