Java語法 | 第一個Java程序

前言

C: 在上一篇继榆,我們搭建好了 Java 語言的開發(fā)環(huán)境巾表,這一篇查老師就帶著大家愉快的寫出我們的第一個程序,不過本篇我們是使用記事本(比較原生態(tài))來寫程序略吨,并不使用其他的高級開發(fā)工具集币,所以可能會顯得比較低端,請大家見諒翠忠。

飯要一口一口的吃鞠苟,工具也要一點一點的升級,技術(shù)也要一點一滴的積累。

開不開心

系列閱讀

查老師有話說: 雖然查老師心中你是最棒的当娱,但是如果你上一篇沒看吃既,還是建議打開快速串一下,以防止對下方的內(nèi)容無法保持連貫性跨细。

開掛滿分

開發(fā)步驟

一個Java程序的開發(fā)鹦倚,需要經(jīng)過:編寫源碼,編譯源碼和運(yùn)行冀惭,這三大階段震叙。

day01-3-1

和查老師來體驗一下吧!源代碼/源程序:程序的原始指令散休,由程序員編寫 媒楼。

1.首先使用記事本編寫源代碼文件( Java 程序的源代碼文件擴(kuò)展名為 .java)。

day01-3-2

2.打開cmd命令窗口戚丸,進(jìn)入源代碼所在地划址,使用 javac 命令編譯,生成 .class 文件限府。

day01-3-3

查老師有話說: 編寫完的源代碼夺颤,計算機(jī)是無法直接執(zhí)行的,因為它只識別二進(jìn)制谣殊,所以我們需要一個 翻譯官 幫助我們?nèi)シg下拂共,這樣計算機(jī)才能夠識別。翻譯官 就是編譯器姻几,編譯之后就會出現(xiàn)一個擴(kuò)展名為 .class 的字節(jié)碼文件(它并非純二進(jìn)制文件宜狐,是運(yùn)行于JVM中的一種偽二進(jìn)制文件),這時才能夠被計算機(jī)執(zhí)行蛇捌。

3.使用 java 命令運(yùn)行 .class 文件抚恒。

運(yùn)行 .class 文件時不能加上 .class 后綴名。

day01-3-4

這樣我們就實現(xiàn)了第一個 Java 程序络拌,我們借助它給計算機(jī)下達(dá)了一個在控制臺輸出 Hello World!!! 的指令俭驮。

查老師有話說: 為什么我們開始編寫的第一個程序要輸出 Hello World 這句話?

實際是因為《The C Programming Language》這本 C 語言書籍中使用它做了第一個演示程序春贸,非常著名顾画,所以后來的程序員在學(xué)習(xí)編程或進(jìn)行設(shè)備調(diào)試時延續(xù)了這一習(xí)慣击困。

一個程序員才懂的冷笑話:一位資深程序員到了退休的年紀(jì),為了給自己的晚年生活增加點樂趣,開始學(xué)習(xí)書法扯俱,在開始學(xué)習(xí)書法的第一天食棕,資深程序員鋪開紙張暖庄,大筆一揮 Hello World 问芬!

基本程序結(jié)構(gòu)

剛才我們編寫了第一個 Java 程序翼岁,盡管背了相關(guān)單詞,但肯定還是看的云里霧里的司光。查老師先給你個提醒琅坡,現(xiàn)在呢不要求你過多理解它們的含義,只需要知道它的效果和注意事項即可残家。隨著學(xué)習(xí)的深入榆俺,慢慢就會深入認(rèn)識和理解了,千萬別鉆牛角尖 坞淮,因為還沒給你講的肯定是因為查老師認(rèn)為目前還不是太適合你的谴仙,欲速則不達(dá)

下方是你現(xiàn)在需要記憶的注意事項和規(guī)范:

  1. 類名與文件名完全一致碾盐,首字母大寫(帕斯卡/大駝峰命名法)。

  2. main() 方法是程序的入口揩局,四要素必不可少毫玖。

  3. 核心語句:System.out.println(); 從控制臺輸出信息,S是大寫凌盯。( Java 嚴(yán)格區(qū)分大小寫)

  4. { 和 }一 一對應(yīng)付枫,缺一不可。(注意模仿查老師的編寫習(xí)慣)

  5. 注意要有層級縮進(jìn)驰怎,一行只寫一條語句即可阐滩。

day01-3-5

查老師有話說:“好的代碼應(yīng)該是給人看的,而不是給機(jī)器看的县忌〉嗬疲” 上面的5條注意事項,其實4條都在強(qiáng)調(diào)規(guī)范症杏,編碼規(guī)范非常重要装获!

一個軟件的生命周期中,80%的花費都在于維護(hù)厉颤。幾乎沒有任何一個軟件穴豫,在其整個生命周期中,均由最初的開發(fā)人員來維護(hù)逼友。編碼規(guī)范可以改善軟件的可讀性精肃,可以讓程序員盡快而徹底地理解新的代碼。更多規(guī)范除了模仿查老師文章示例習(xí)慣外帜乞,還請后續(xù)隨時與查老師一起解讀《阿里巴巴Java開發(fā)手冊》司抱。

輸出語句

其實輸出功能,不僅僅只有 println() 這一個語法挖函,還有去掉了 ln 之后的 print() 也可以實現(xiàn)状植。

System.out.print(); // 輸出完不換行
System.out.println(); // 輸出完換行

如果想讓 print() 實現(xiàn) println() 的效果浊竟,可以借助轉(zhuǎn)義符。

轉(zhuǎn)義符 說明
\n 將光標(biāo)移動到下一行的第一格
\t 將光標(biāo)移動到下一個水平制表位置
// 下方前兩行和第三行代碼是等效的津畸。
System.out.println("Hello");
System.out.println("World");
System.out.print("Hello \n World\n");

注釋

在 Java 的編寫過程中我們需要對一些程序進(jìn)行注釋振定,這樣除了自己更方便閱讀,別人也更好理解我們的程序肉拓,所以我們一定要適時的加一些注釋后频,可以是編程思路或者是程序的作用。

Java 中有三種注釋:

  1. 單行注釋以 // 開始暖途;
  2. 多行注釋以 /* 開頭卑惜,以 */ 結(jié)尾;
  3. JavaDoc(文檔注釋)注釋以/**開頭驻售,以*/結(jié)尾(文檔注釋前期了解露久,后期再掌握)
/**
 * HelloWorld.java           
 * 第一個Java程序
 */
public class HelloWorld{
    public static void main(String[ ] args){
        // 輸出消息到控制臺(單行注釋后注意添加一個空格,這是一個小規(guī)范)
        System.out.println("Hello  World!!!");      
    }
}
注釋

跨平臺原理

《Java語法 | Java概述》中欺栗,查老師講 Java 的能力時就埋了一個伏筆毫痕,Java 程序是跨平臺的,何謂跨平臺迟几?查老師給你舉個非跨平臺的程序例子消请,下圖是百度網(wǎng)盤客戶端程序的下載頁面,它為了能夠運(yùn)行在不同的平臺(系統(tǒng))上类腮,開發(fā)了6套系統(tǒng)(其實是7套臊泰,還有一套網(wǎng)頁版)⊙潦啵看到這其實你就應(yīng)該能明白為什么跨平臺是一個非常優(yōu)秀的能力了缸逃。

day01-3-x1
day01-3-8

而經(jīng)過剛才編寫完第一個 Java 程序之后,我們思考一下 Java 為什么能跨平臺厂抽?其實在開發(fā)步驟中就能找到原因察滑。編譯!編譯會將源代碼轉(zhuǎn)變?yōu)樽止?jié)碼文件(偽二進(jìn)制)修肠,而這偽二進(jìn)制內(nèi)容未來運(yùn)行時是運(yùn)行在 JVM(Java Virtual Machine)上的贺辰,換而言之,其是因為 JVM 能跨平臺安裝嵌施,所以 Java 才能實現(xiàn)跨平臺 饲化。

由此,Java 程序員就可以不用考慮所寫的程序要在哪里運(yùn)行了吗伤,反正都是在 JVM 虛擬機(jī)上運(yùn)行的吃靠,JVM 會負(fù)責(zé)將其變成相應(yīng)平臺的機(jī)器語言,而這個轉(zhuǎn)變并不是程序員應(yīng)該關(guān)心的足淆。后續(xù)的很多優(yōu)秀程序設(shè)計都采用了該思想巢块。

day01-3-9

Java虛擬機(jī)有自己完善的硬件架構(gòu)礁阁,如處理器、堆棧等族奢,還具有相應(yīng)的指令系統(tǒng)姥闭。

Java虛擬機(jī)本質(zhì)上就是一個程序,當(dāng)它在命令行上啟動的時候越走,就開始執(zhí)行保存在某字節(jié)碼文件中的指令棚品。Java語言的可移植性正是建立在Java虛擬機(jī)的基礎(chǔ)上。任何平臺只要裝有針對于該平臺的Java虛擬機(jī)廊敌,字節(jié)碼文件(.class)就可以在該平臺上運(yùn)行铜跑。這就是“一次編譯,多次運(yùn)行”骡澈。

Java虛擬機(jī)不僅是一種跨平臺的軟件锅纺,而且是一種新的網(wǎng)絡(luò)計算平臺。該平臺包括許多相關(guān)的技術(shù)肋殴,如符合開放接口標(biāo)準(zhǔn)的各種API伞广、優(yōu)化技術(shù)等。Java技術(shù)使同一種應(yīng)用可以運(yùn)行在不同的平臺上疼电。Java平臺可分為兩部分,即Java虛擬機(jī)(Java virtual machine减拭,JVM)和Java API類庫蔽豺。[1]

目前先了解到這種程度即可,JVM 深入學(xué)習(xí)是未來提升 "Java 內(nèi)功" 的重要一步拧粪,但它不太適合剛學(xué)習(xí)的你修陡。

編譯和反編譯

從剛才的學(xué)習(xí)中,我們清楚了編譯是將源代碼文件轉(zhuǎn)換為了字節(jié)碼文件可霎,這字節(jié)碼文件也是以后我們運(yùn)行所需的魄鸦。如果有一天,你的老板給你了一堆字節(jié)碼文件癣朗,讓你去借鑒一下內(nèi)容(源代碼)拾因,你當(dāng)然知道字節(jié)碼文件里是一堆亂碼了,所以隨著而來的旷余,我們需要它再轉(zhuǎn)換為源代碼文件绢记,這就是反編譯,我們可以借助工具來更快正卧,更好的批量處理蠢熄。

編譯: 將源文件(.java)轉(zhuǎn)換成字節(jié)碼文件(.class)的過程稱為編譯。

反編譯: 將字節(jié)碼文件(.class)轉(zhuǎn)換回源文件(.java)的過程稱為反編譯炉旷。(常用有Jad签孔、FrontEnd叉讥、jd-gui)

此處僅僅演示利用 Jad 來將 HelloWorld.class 進(jìn)行反編譯,類似的工具還有 jd-gui 等饥追。

day01-4-1
day01-4-2
day01-4-3

參考文獻(xiàn)

[1]顧瑋. Java虛擬機(jī)的分析與研究[J]. 辦公自動化,2017,22(9):35-36,11

后記

好了图仓,第一個 Java 程序的介紹也就到這兒結(jié)束了,本篇的作業(yè)請微信搜索關(guān)注: 查老師的講義 判耕,然后回復(fù) 第一個Java程序作業(yè) 即可透绩。

今天這篇感覺怎么樣?概念是否清楚了壁熄?語法是否記住了帚豪?萬事開頭難,加油啊同學(xué)草丧!

查老師有話說: 對于技術(shù)的學(xué)習(xí)狸臣,查老師一貫遵循的步驟是:先用最最簡單的 demo 讓它跑起來,然后學(xué)學(xué)它的最最常用 API 和 配置讓自己能用起來昌执,最后熟練使用的基礎(chǔ)上烛亦,在空閑時嘗試閱讀它的源碼讓自己能夠洞徹它的運(yùn)行機(jī)制,部分問題出現(xiàn)的原因懂拾,同時借鑒這些技術(shù)實現(xiàn)來提升自己的代碼高度煤禽。

所以在查老師的文章中,前期基本都是小白文岖赋,僅僅穿插很少量的源碼研究檬果。當(dāng)然等小白文更新多了,你們還依然喜歡唐断,后期會不定時專門對部分技術(shù)的源碼進(jìn)行解析选脊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市脸甘,隨后出現(xiàn)的幾起案子恳啥,更是在濱河造成了極大的恐慌,老刑警劉巖丹诀,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钝的,死亡現(xiàn)場離奇詭異,居然都是意外死亡铆遭,警方通過查閱死者的電腦和手機(jī)扁藕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疚脐,“玉大人亿柑,你說我怎么就攤上這事」髋” “怎么了望薄?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵疟游,是天一觀的道長。 經(jīng)常有香客問我痕支,道長颁虐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任卧须,我火速辦了婚禮另绩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘花嘶。我一直安慰自己笋籽,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布椭员。 她就那樣靜靜地躺著车海,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隘击。 梳的紋絲不亂的頭發(fā)上侍芝,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機(jī)與錄音埋同,去河邊找鬼州叠。 笑死,一個胖子當(dāng)著我的面吹牛凶赁,可吹牛的內(nèi)容都是我干的咧栗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼哟冬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了忆绰?” 一聲冷哼從身側(cè)響起浩峡,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎错敢,沒想到半個月后翰灾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡稚茅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年纸淮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亚享。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡咽块,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出欺税,到底是詐尸還是另有隱情侈沪,我是刑警寧澤揭璃,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站亭罪,受9級特大地震影響瘦馍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜应役,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一情组、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧箩祥,春花似錦院崇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盲泛,卻和暖如春濒持,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寺滚。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工柑营, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人村视。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓官套,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蚁孔。 傳聞我的和親對象是個殘疾皇子奶赔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354