第一集-Java為啥要用類

這集視頻我會從Helloworld出發(fā)衰抑,先講一講一個java類由哪些構(gòu)成抒倚,然后在介紹Java語法之前先說一說為啥Java要用類刹衫,滿足一下初學(xué)者的好奇心荧琼。我們在寫C語言程序的時候,一般一來就int main了咖杂,但是寫java的時候卻要public class啥啥啥的庆寺,為啥什么都要用類呢?這要從Java的平臺無關(guān)性說起诉字,為此我把跟平臺相關(guān)的C++語言作為對比懦尝。什么叫平臺無關(guān)性呢,就是你在Linux系統(tǒng)里面寫一段Java代碼壤圃,把它編譯了陵霉,把編譯好的代碼放到windows平臺也能運(yùn)行,怎么做到的呢伍绳?

首先Java支持平臺無關(guān)性有三個要素踊挠,C++是將編譯好的代碼直接放在操作系統(tǒng)上運(yùn)行的,但是Java不一樣冲杀,Java運(yùn)行在Java虛擬機(jī)這個平臺上效床,這個平臺扮演著Java程序所在的機(jī)器硬件和系統(tǒng)之間的緩沖角色,這樣Java程序只需與Java平臺打交道权谁,而不用管具體的操作系統(tǒng)剩檀。第二,Java基本的數(shù)據(jù)類型的值域和和行為由自己定義旺芽,而C++基本數(shù)據(jù)類型由它的占位寬度決定沪猴,占位寬度由所在的平臺決定。第三采章、Java語言編譯成.class文件运嗜,這是一種字節(jié)碼,其格式由嚴(yán)格的定義悯舟,Java虛擬機(jī)只用關(guān)心編譯成的字節(jié)碼的內(nèi)容担租,將.class字節(jié)碼作為中間橋梁,因此可做到與平臺無關(guān)抵怎。

說到.class字節(jié)碼翩活,我就先拿出一個概念阱洪,Java運(yùn)行在Java虛擬機(jī)上面,Java虛擬機(jī)只認(rèn)得到.class字節(jié)碼的文件菠镇,實(shí)際上除了Java語言冗荸,JRuby、Groovy利耍、Scala等程序都能編譯成.class文件蚌本,Java虛擬機(jī)并不關(guān)心.class文件的來源是哪種語言。說到這里我就要簡要提一下了C++語言的編譯過程就在這里跟Java有很大區(qū)別隘梨,首先我們來看C++語言的編譯過程:

C++的編譯與鏈接過程主要由以下步驟組成,預(yù)處理程癌、編譯和優(yōu)化、匯編生成目標(biāo)文件轴猎、鏈接嵌莉、生成可執(zhí)行文件。









預(yù)處理過程主要就是替換宏捻脖、刪除注釋锐峭、處理預(yù)處理命令,編譯和優(yōu)化階段就是進(jìn)行詞法語法語義分析可婶,然后生成匯編指令沿癞。匯編生成目標(biāo)文件階段中生成的目標(biāo)文件主要包含數(shù)據(jù)和二進(jìn)制代碼指令和兩個表,未解決符號表和導(dǎo)出符號表矛渴,分別告訴鏈接器自己需要什么和能夠提供什么椎扬。由于目標(biāo)文件在程序中可能調(diào)用了某個庫文件中的函數(shù),因此不能立即執(zhí)行具温,這個時候就需要鏈接程序?qū)⒛繕?biāo)文件和這些鏈接在一起蚕涤,生成可執(zhí)行文件∠承桑回看整個編譯過程我們發(fā)現(xiàn)揖铜,在編譯和優(yōu)化階段,它的過程是依賴于機(jī)器的硬件結(jié)構(gòu)的剂习,比如如何充分利用機(jī)器的各個硬件寄存器存放有關(guān)變量的值,另外生成的可執(zhí)行文件是直接在操作系統(tǒng)上運(yùn)行的较沪,也跟平臺有關(guān)鳞绕。

但是Java語言的編譯過程就不一樣了:


Java代碼的編譯過程由Javac編譯器完成,Javac編譯器將Java代碼編譯成Java虛擬機(jī)能夠識別的一種語言尸曼,即.class字節(jié)碼们何,然后由Java虛擬機(jī)將它轉(zhuǎn)化為當(dāng)前這個機(jī)器能夠識別的機(jī)器語言。每一個.class文件由每一個.java文件編譯而來控轿,它的規(guī)范比較嚴(yán)格冤竹,有很多約定拂封,它就要求每一個.java文件都必須要有一個主類,而且類的名字必須要跟文件名一致鹦蠕,這應(yīng)該也是為了統(tǒng)一.class字節(jié)碼的規(guī)范的需要冒签。

另外,從兩種語言的入口函數(shù)調(diào)用也是各具特色钟病。

C/C++的運(yùn)行環(huán)境中的上層.c文件調(diào)用C Runtime startup中的void mainCRTStartup(void)函數(shù)萧恕,它在執(zhí)行了一系列初始化操作,比如獲取命令行參數(shù)肠阱,獲取環(huán)境變量值票唆,初始化全局變量,初始化IO的所需各項(xiàng)準(zhǔn)備后屹徘,調(diào)用main(argc,argv)

Java則不同走趋,在編譯生成了.class字節(jié)碼文件了之后,在虛擬機(jī)上運(yùn)行的時候噪伊,它會首先分析你的.class文件中有沒有定義main函數(shù)簿煌,如果有,就會把main函數(shù)在的當(dāng)前類裝載到內(nèi)存中酥宴,完成一些初始化操作啦吧,然后執(zhí)行main函數(shù)體。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拙寡,一起剝皮案震驚了整個濱河市授滓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肆糕,老刑警劉巖般堆,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诚啃,居然都是意外死亡淮摔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門始赎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來和橙,“玉大人,你說我怎么就攤上這事造垛∧д校” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵五辽,是天一觀的道長办斑。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么乡翅? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任鳞疲,我火速辦了婚禮,結(jié)果婚禮上蠕蚜,老公的妹妹穿的比我還像新娘尚洽。我一直安慰自己,他們只是感情好波势,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布翎朱。 她就那樣靜靜地躺著,像睡著了一般尺铣。 火紅的嫁衣襯著肌膚如雪拴曲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天凛忿,我揣著相機(jī)與錄音澈灼,去河邊找鬼。 笑死店溢,一個胖子當(dāng)著我的面吹牛叁熔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播床牧,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼荣回,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了戈咳?” 一聲冷哼從身側(cè)響起心软,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎著蛙,沒想到半個月后删铃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡踏堡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年猎唁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顷蟆。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡诫隅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帐偎,到底是詐尸還是另有隱情逐纬,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布肮街,位于F島的核電站风题,受9級特大地震影響判导,放射性物質(zhì)發(fā)生泄漏嫉父。R本人自食惡果不足惜沛硅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绕辖。 院中可真熱鬧摇肌,春花似錦、人聲如沸仪际。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽树碱。三九已至肯适,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間成榜,已是汗流浹背框舔。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赎婚,地道東北人刘绣。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像挣输,于是被迫代替她去往敵國和親纬凤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 兒子: 你好撩嚼! 今天借學(xué)校給你們舉辦成人禮儀式之際停士,給你寫了這封信。什么是成人禮?成人禮是很莊重的詞...
    長茅世家大醫(yī)精誠閱讀 23,947評論 0 1
  • 簡明說一下绢馍,我遇到的問題平常打開sql沒有問題向瓷,今天打開 卻打不開(注:現(xiàn)在打開了)運(yùn)行 然后
    青木川_閱讀 561評論 0 0
  • 親子日記第26篇2017年10月20日 星期五 晴 下午接孩子回家,到小區(qū)后看見小朋友們正在下面玩游戲舰涌,孩子...
    海內(nèi)存知己_bd9e閱讀 358評論 0 1
  • 2017.07.04(二) 昨天猖任,天使2.0班金勇班長發(fā)布了100天里的第二次挑戰(zhàn),8個小組所有人在6:00...
    云變閱讀 288評論 0 2
  • 一瓷耙、學(xué)習(xí)策略1朱躺、策略必須在執(zhí)行之前明確好。2搁痛、策略通過隨時監(jiān)控的方式隨時調(diào)整长搀,方法是“每日監(jiān)控及記錄應(yīng)用某種策略并...
    devourment11閱讀 743評論 0 0