Java基礎(chǔ)教程學(xué)習(xí)_第1頁(yè)
Java基礎(chǔ)教程學(xué)習(xí)_第2頁(yè)
Java基礎(chǔ)教程學(xué)習(xí)_第3頁(yè)
Java基礎(chǔ)教程學(xué)習(xí)_第4頁(yè)
Java基礎(chǔ)教程學(xué)習(xí)_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第1部分Java語(yǔ)言第1章Ja/a的起源對(duì)于計(jì)算機(jī)語(yǔ)言的發(fā)展史,業(yè)界一般認(rèn)為:B語(yǔ)言導(dǎo)致了C語(yǔ)言的誕生,C語(yǔ)言演變出了C+語(yǔ)言,而C+語(yǔ)言將讓位于JavM言。要想更好地了解JavM言,就必須了解它產(chǎn)生的原因、推動(dòng)它發(fā)展的動(dòng)力,以及它對(duì)其他語(yǔ)言的繼承。像以前其他成功的計(jì)算機(jī)語(yǔ)言一樣,Java承了其他語(yǔ)言的先進(jìn)原理,同時(shí)又因其獨(dú)特的環(huán)境要求而提出了一些創(chuàng)新性的概念。在這本書(shū)的其他各章中,將從實(shí)用的角度,對(duì)JavM言、庫(kù)及應(yīng)用程序進(jìn)行包括語(yǔ)法在內(nèi)的詳細(xì)介紹。在本章里,我們將介紹JavM言產(chǎn)生的背景、發(fā)展過(guò)程,以及使它變得如此重要的原因。盡管JavM言已和Internet在線環(huán)境密不可分,但首先應(yīng)該注

2、意到的最重要一點(diǎn)是:它是一種程序語(yǔ)言。計(jì)算機(jī)語(yǔ)言的革新和發(fā)展需要2個(gè)基本因素的驅(qū)動(dòng):適應(yīng)正在變化的環(huán)境和需求實(shí)現(xiàn)編程藝術(shù)的完善與提高卜面你將看到,Java正是在這兩個(gè)因素的驅(qū)動(dòng)下產(chǎn)生的。1. 1Java勺由來(lái)Java是和C+聯(lián)系在一起,而C+則是從C語(yǔ)言派生而來(lái)的,所以Java言繼承了這兩種語(yǔ)言的大部分特性。Java語(yǔ)法是從C繼承的,Jav許多面向?qū)ο蟮奶匦允艿紺+勺影響。事實(shí)上,Java幾個(gè)自定義的特性都來(lái)自于或可以追溯到它的前驅(qū)。而且,Java言的產(chǎn)生與過(guò)去3阡中計(jì)算機(jī)語(yǔ)言細(xì)致改進(jìn)和不斷發(fā)展密切相關(guān)。基于這些原因,本節(jié)將按順序回顧促使Java生的事件和推動(dòng)力。正如你將看到的一樣,每一次語(yǔ)言

3、設(shè)計(jì)的革新都是因?yàn)橄惹暗恼Z(yǔ)言不能解決目前遇到的基本問(wèn)題而引起。Java不例外。1.1.1 現(xiàn)代的編程語(yǔ)言的誕生:C語(yǔ)言C語(yǔ)言的產(chǎn)生震撼了整個(gè)計(jì)算機(jī)界。它的影響不應(yīng)該被低估,因?yàn)樗鼜母旧细淖兞司幊痰姆椒ê退悸?。C語(yǔ)言的產(chǎn)生是人們追求結(jié)構(gòu)化、高效率、高級(jí)語(yǔ)言的直接結(jié)果,可用它替代匯編語(yǔ)言開(kāi)發(fā)系統(tǒng)程序。當(dāng)設(shè)計(jì)一種計(jì)算機(jī)語(yǔ)言時(shí),經(jīng)常要從以下幾方面進(jìn)行權(quán)衡:易用性與功能安全性和效率性穩(wěn)定性和可擴(kuò)展性C語(yǔ)言出現(xiàn)以前,程序員們不得不經(jīng)常在有優(yōu)點(diǎn)但在某些方面又有欠缺的語(yǔ)言之間做出選擇。例如,盡管公認(rèn)FORTR/m學(xué)計(jì)算應(yīng)用方面可以編寫(xiě)出相當(dāng)高效的程序,但它不適于編寫(xiě)系統(tǒng)程序。BASIC!然容易學(xué)習(xí),但功能不

4、夠強(qiáng)大,并且談不上結(jié)構(gòu)化,這使它應(yīng)用到大程序的有效性受到懷疑。匯編語(yǔ)言雖能寫(xiě)出高效率的程序,但是學(xué)習(xí)或有效地使用它卻是不容易的。而且,調(diào)試匯編程序也相當(dāng)困難。另一個(gè)復(fù)雜的問(wèn)題是,早期設(shè)計(jì)的計(jì)算機(jī)語(yǔ)言(如BASICCOBOLFORTRAN沒(méi)有考慮結(jié)構(gòu)化設(shè)計(jì)原則,使用GOT糜句作為對(duì)程序進(jìn)行控制的一種主要方法。這樣做的結(jié)果是,用這些語(yǔ)言編寫(xiě)的程序往往成了“意大利面條式的程序代碼”,一大堆混亂的跳轉(zhuǎn)語(yǔ)句和條件分支語(yǔ)句使得程序幾乎不可能被讀懂。Pascal然是結(jié)構(gòu)化語(yǔ)言,但它的設(shè)計(jì)效率比較低,而且缺少幾個(gè)必需的特性,因而無(wú)法在大的編程范圍內(nèi)使用(特別是,給定的Pascal標(biāo)準(zhǔn)語(yǔ)言在特定時(shí)間是可用的,但

5、將Pasd為系統(tǒng)級(jí)編碼是不切實(shí)際的)。因此,在C語(yǔ)言產(chǎn)生以前,沒(méi)有任何一種語(yǔ)言能完全滿足人們的需要,但人們對(duì)這樣一種語(yǔ)言的需要卻是迫切的。在201紀(jì)7砰代初期,計(jì)算機(jī)革命開(kāi)始了,對(duì)軟件的需求量日益增加,使用早期的計(jì)算機(jī)語(yǔ)言進(jìn)行軟件開(kāi)發(fā)根本無(wú)法滿足這種需要。學(xué)術(shù)界付出很多努力,嘗試創(chuàng)造一種更好的計(jì)算機(jī)語(yǔ)言。但是,促使C語(yǔ)言誕生的另一個(gè),也許是最重要的因素,是計(jì)算機(jī)硬件資源的富余帶來(lái)了機(jī)遇。計(jì)算機(jī)不再像以前那樣被緊鎖在門(mén)里,程序員們可以隨意使用計(jì)算機(jī),可以隨意進(jìn)行自由嘗試,因而也就有了可以開(kāi)發(fā)適合自己使用的工具的機(jī)會(huì)。所以,在C語(yǔ)言誕生的前夕,計(jì)算機(jī)語(yǔ)言向前飛躍的時(shí)機(jī)已經(jīng)成熟。在DennisRit

6、Chie個(gè)發(fā)明和實(shí)現(xiàn)在DECPDP-1運(yùn)行UNI腰作系統(tǒng)時(shí),一種更古老的由MartirRichards計(jì)的BCP語(yǔ)言導(dǎo)致了曲言的產(chǎn)生。受BCP語(yǔ)言的影響,由KenThompsO朋的B語(yǔ)言,在20s紀(jì)7葉代逐漸向C語(yǔ)言發(fā)展演變。在此后的許多年里,由BrianKernighaDennisRitChie的TheCProgramming珍aPguatice-Ha978)198年 12被認(rèn)為是事實(shí)上的C語(yǔ)言標(biāo)準(zhǔn),該書(shū)認(rèn)為C只是支持UNIX操作系統(tǒng)的一種語(yǔ)言。月,美國(guó)國(guó)家標(biāo)準(zhǔn)化組織(ANS制定了C語(yǔ)言的標(biāo)準(zhǔn),C語(yǔ)言被正式標(biāo)準(zhǔn)化。許多人認(rèn)為C語(yǔ)言的產(chǎn)生標(biāo)志著現(xiàn)代計(jì)算機(jī)語(yǔ)言時(shí)代的開(kāi)始。它成功地綜合處理了長(zhǎng)期困

7、擾早期語(yǔ)言的矛盾屬性。C語(yǔ)言是功能強(qiáng)大、高效的結(jié)構(gòu)化語(yǔ)言,簡(jiǎn)單易學(xué),而且它還包括一個(gè)無(wú)形的方面:它是程序員自己的語(yǔ)言。在C語(yǔ)言出現(xiàn)以前,計(jì)算機(jī)語(yǔ)言要么被作為學(xué)術(shù)實(shí)驗(yàn)而設(shè)計(jì),要么由官僚委員會(huì)設(shè)計(jì)。而C語(yǔ)言不同。它的設(shè)計(jì)、實(shí)現(xiàn)、開(kāi)發(fā)由真正的從事編程工作的程序員來(lái)完成,反映了現(xiàn)實(shí)編程工作的方法。它的特性經(jīng)由實(shí)際運(yùn)用該語(yǔ)言的人們不斷去提煉、測(cè)試、思考、再思考,使得C語(yǔ)言成為程序員們喜歡使用的語(yǔ)言。確實(shí),C語(yǔ)言迅速吸引了許多狂熱的追隨者,因而很快受到許多程序員的青睞。簡(jiǎn)言之,C語(yǔ)言是由程序員設(shè)計(jì)并由他們使用的一種語(yǔ)言。正如你將看到的,Java承了這個(gè)思想。1.1.2 對(duì)C+的需要在201紀(jì)7砰代末和8葉

8、代初,C成為了主流的計(jì)算機(jī)編程語(yǔ)言,至今仍被廣泛使用。你也許會(huì)問(wèn),既然C是一種成功且有用的語(yǔ)言,為什么還需要新的計(jì)算機(jī)語(yǔ)言?答案是復(fù)雜性(complexity程序越來(lái)越復(fù)雜這一事實(shí)貫穿編程語(yǔ)言的歷史。C+正是適應(yīng)了這一需求。下面介紹為什么對(duì)程序復(fù)雜性的更好管理是C+產(chǎn)生的基本條件。自從計(jì)算機(jī)發(fā)明以來(lái),編程方法經(jīng)歷了戲劇性的變化。例如,當(dāng)計(jì)算機(jī)剛發(fā)明出來(lái)時(shí),編程是通過(guò)面板觸發(fā)器用人工打孔的辦法輸入二進(jìn)制機(jī)器指令來(lái)實(shí)現(xiàn)的。對(duì)于只有幾百行的程序,這種辦法是可行的。隨著程序不斷增大,人們發(fā)明了匯編語(yǔ)言,它通過(guò)使用符號(hào)來(lái)代替機(jī)器指令,這樣程序員就能處理更大、更復(fù)雜的程序。隨著程序的進(jìn)一步增大,高級(jí)語(yǔ)言產(chǎn)

9、生了,它給程序員提供了更多的工具來(lái)處理復(fù)雜性問(wèn)題。第一個(gè)被廣泛使用的高級(jí)語(yǔ)言當(dāng)然是FORTRANt管FORTR蒯初給人留下了深刻的印象,但它無(wú)法開(kāi)發(fā)出條理清楚易于理解的程序。201紀(jì)6砰代提出了結(jié)構(gòu)化編程方法。這種結(jié)構(gòu)化的編程思想被像C這樣的語(yǔ)言所應(yīng)用,第一次使程序員可以相對(duì)輕松地編寫(xiě)適度復(fù)雜的程序。然而,當(dāng)一個(gè)工程項(xiàng)目達(dá)到一定規(guī)模后,即使使用結(jié)構(gòu)化編程方法,編程人員也無(wú)法對(duì)它的復(fù)雜性進(jìn)行有效管理。2cB紀(jì)8(#代初期,許多工程項(xiàng)目的復(fù)雜性都超過(guò)了結(jié)構(gòu)化方法的極限。為解決這個(gè)問(wèn)題,面向?qū)ο缶幊蹋╫bject-orienpedgrammingOOP新方法誕生了。面向?qū)ο蟮木幊淘谶@本書(shū)的后面詳細(xì)討

10、論,但在這里給出一個(gè)簡(jiǎn)短的定義:面向?qū)ο蟮木幊淌峭ㄟ^(guò)使用繼承性、封裝性和多態(tài)性來(lái)幫助組織復(fù)雜程序的編程方法??傊?,盡管C是世界上偉大的編程語(yǔ)言之一,但它處理復(fù)雜性的能力有限。一旦一個(gè)程序的代碼超過(guò)25000700H0僦很難從總體上把握它的復(fù)雜性了。C+突破了這個(gè)限制,幫助程序員理解并且管理更大的程序。197笄,當(dāng)BjarneStroustrU新澤西州的MurraHill實(shí)驗(yàn)室工作時(shí),發(fā)明了C+StroustrUp初把這種新語(yǔ)言稱為“帶類的C'。198鴕,改名為C+C+通過(guò)增加面向?qū)ο蟮奶匦詳U(kuò)充了Q因?yàn)镃+產(chǎn)生在C的基礎(chǔ)之上,因此它包括了C所有的特征、屬性和優(yōu)點(diǎn)。這是C+作為語(yǔ)言成功的一

11、個(gè)關(guān)鍵原因。C+的發(fā)明不是企圖創(chuàng)造一種全新的編程語(yǔ)言,而是對(duì)一個(gè)已經(jīng)高度成功的語(yǔ)言的改進(jìn)。C+199笄11月被標(biāo)準(zhǔn)化,目前的標(biāo)準(zhǔn)是ANSI/ISO1.1.3 Java出現(xiàn)的時(shí)機(jī)已經(jīng)到來(lái)在20s紀(jì)8砰代末和9葉代初,使用面向?qū)ο缶幊痰腃+語(yǔ)言占主導(dǎo)地位。的確,有一段時(shí)間程序員似乎都認(rèn)為已經(jīng)找到了一種完美的語(yǔ)言。因?yàn)镃+有面向?qū)ο蟮奶卣?,又有C語(yǔ)言高效和格式上的優(yōu)點(diǎn),因此它是一種可以被廣泛應(yīng)用的編程語(yǔ)言。然而,就像過(guò)去一樣,推動(dòng)計(jì)算機(jī)語(yǔ)言進(jìn)化的力量正在醞釀。在隨后的幾年里,萬(wàn)維網(wǎng)(WW、W和Internet達(dá)到臨界狀態(tài)。這個(gè)事件促成編程的另一場(chǎng)革命。1.2 Java勺產(chǎn)生JavOb由JamesGo

12、sPngrickNaughChnisWarEdFrankMikeSheridan1991年在SunMicrosystems設(shè)計(jì)出來(lái)的。開(kāi)發(fā)第一個(gè)版本花了1階月。該語(yǔ)言開(kāi)始名叫“Oak,于1995更名為“JaVao從1992勺秋天Oak世到1995春天公開(kāi)發(fā)布Java語(yǔ)言,許多人對(duì)JavOl設(shè)計(jì)和改進(jìn)做出了貢獻(xiàn)。BillJoyArthurvanHofOnathanPayneFrankYeflMTimLindhOlmfc要的貢獻(xiàn)者,正是他們的貢獻(xiàn)使最初原型得以成熟。說(shuō)起來(lái)多少有些令人吃驚,Java最初推動(dòng)力并不是因特網(wǎng)!而是源于對(duì)獨(dú)立于平臺(tái)(也就是體系結(jié)構(gòu)中立)語(yǔ)言的需要,這種語(yǔ)言可創(chuàng)建能夠嵌入微

13、波爐、遙控器等各種家用電器設(shè)備的軟件。用作控制器的CP曲片是多種多樣的,但C和C+以及其他絕大多數(shù)語(yǔ)言的缺點(diǎn)是只能對(duì)特定目標(biāo)進(jìn)行編譯。盡管為任何類型的CP曲片編譯C+程序是可能的,但這樣做需要一個(gè)完整的以該CPU;目標(biāo)的C+編譯器,而創(chuàng)建編譯器是一項(xiàng)既耗資巨大又耗時(shí)較長(zhǎng)的工作。因此需要一種簡(jiǎn)單且經(jīng)濟(jì)的解決方案。為了找到這樣一種方案,Gosling和其他人開(kāi)始一起致力于開(kāi)發(fā)一種可移植、跨平臺(tái)的語(yǔ)言,該語(yǔ)言能夠生成運(yùn)行于不同環(huán)境、不同CP曲片上的代碼。他們的努力最終促成了Java誕生。在Jav的一些細(xì)節(jié)被設(shè)計(jì)出來(lái)的同時(shí),第二個(gè)并且也是最重要的因素出現(xiàn)了,該因素將對(duì)Jav的未來(lái)起著至關(guān)重要的作用。這

14、第二個(gè)因素當(dāng)然就是萬(wàn)維網(wǎng)(WWW/。如果萬(wàn)維網(wǎng)(WWW/的成型和Java實(shí)現(xiàn)不是同時(shí)發(fā)生的話,那么Jav笛能保持它有用、但默默無(wú)聞的用于電子消費(fèi)品編程語(yǔ)言的狀態(tài)。然而,隨著萬(wàn)維網(wǎng)的出現(xiàn),Jav被推到計(jì)算機(jī)語(yǔ)言設(shè)計(jì)的最前沿,因?yàn)槿f(wàn)維網(wǎng)也需要可移植的程序。絕大多數(shù)程序員在涉足編程領(lǐng)域時(shí)就知道可移植的程序像他們的理想一樣難以捉摸。盡管人們對(duì)高效的、可移植的(獨(dú)立于平臺(tái))編程方式的追尋幾乎和編程歷史一樣久遠(yuǎn),但它總是讓位于其他的更為緊迫的問(wèn)題。此外,因?yàn)橛?jì)算機(jī)業(yè)被IntelMacintoshUNIX這3個(gè)競(jìng)爭(zhēng)對(duì)手壟斷,大多數(shù)程序員都在其中的某個(gè)領(lǐng)域內(nèi)長(zhǎng)期工作,所以對(duì)可移植語(yǔ)言的需求就不是那么迫切。但是

15、,隨著因特網(wǎng)和We的出現(xiàn),關(guān)于可移植性語(yǔ)言的舊問(wèn)題又被提了出來(lái)。畢竟,因特網(wǎng)由不同的、分布式的系統(tǒng)組成,其中包括各種類型的計(jì)算機(jī)、操作系統(tǒng)和CPU盡管許多類型的平臺(tái)都可以與因特網(wǎng)連接,但用戶仍希望他們能夠運(yùn)行同樣的程序。曾經(jīng)是一個(gè)令人煩惱卻無(wú)需優(yōu)先考慮的問(wèn)題現(xiàn)在變成了急需解決的問(wèn)題。1993,Java計(jì)小組的成員發(fā)現(xiàn)他們?cè)诰幹魄度胧娇刂破鞔a時(shí)經(jīng)常遇到的可移植性問(wèn)題,在編制因特網(wǎng)代碼的過(guò)程中也出現(xiàn)了。事實(shí)上,開(kāi)始被設(shè)計(jì)為解決小范圍問(wèn)題的Java言同樣可以被用在大范圍的因特網(wǎng)上。這個(gè)認(rèn)識(shí)使他們將Java重心由電子消費(fèi)品轉(zhuǎn)移到Intern編程。因此,中立體系結(jié)構(gòu)編程語(yǔ)言的需要是促使Java生的源動(dòng)

16、力,而Internet卻最終導(dǎo)致了Java成功。正如前面提到的,Jav的大部分特性是從C和C+用繼承的。Java計(jì)人員之所以故意這么做,主要是因?yàn)樗麄冇X(jué)得,在新語(yǔ)言中使用熟悉的C語(yǔ)法及模仿C+程向?qū)ο蟮奶匦?,將使他們的語(yǔ)言對(duì)經(jīng)驗(yàn)豐富的C/C+程序員有更大的吸引力。除了表面類似外,其他一些促使C和C+成功的因素也幫了Jav的忙。首先,Java設(shè)計(jì)、測(cè)試、精煉由真正從事編程工作的人員完成,它根植于設(shè)計(jì)它的人員的需要和經(jīng)驗(yàn),因而也是一個(gè)程序員自己的語(yǔ)言。其次,Java緊密結(jié)合的且邏輯上是協(xié)調(diào)一致的。最后,除了那些Intern境強(qiáng)加的約束以外,Java了編程人員完全的控制權(quán)。如果你程序編的好,你編寫(xiě)的

17、程序就能反映出這一點(diǎn)。相反,如果你的編程手法拙劣,也能在你的程序中反映出來(lái)。換一種說(shuō)法,Jav靜不是訓(xùn)練新手的語(yǔ)言,而是供專業(yè)編程人員使用的語(yǔ)言。由于JavaC+之間的相似性,容易使人將Java單地想象為“C+勺版本”。但其實(shí)這是一種誤解。Ja唯實(shí)踐和理論上都與C+有重要的不同點(diǎn)。盡管Jav受到C+的影響,但它并不是C+的增強(qiáng)版。例如,JavOfC+既不向上兼容,也不向下兼容。當(dāng)然,JavOfC+的相似之處也是很多的,如果你是一個(gè)C+程序員,你會(huì)感覺(jué)到對(duì)Java常熟悉。另外一點(diǎn)是:Java不是用來(lái)取代C+的,設(shè)計(jì)Java為了解決某些特定的問(wèn)題,而設(shè)計(jì)C+是為了解決另外一類完全不同的問(wèn)題。兩者將

18、長(zhǎng)時(shí)間共存。正如本章開(kāi)始提到的,計(jì)算機(jī)語(yǔ)言的革新靠?jī)蓚€(gè)因素驅(qū)動(dòng):對(duì)計(jì)算環(huán)境改變的適應(yīng)和編程藝術(shù)的進(jìn)步。環(huán)境的變化促使Jav這種獨(dú)立于平臺(tái)的語(yǔ)言注定成為Internet的分布式編程語(yǔ)言。同時(shí),Jav也改變了人們的編程方式,特別是JavaC+使用的面向?qū)ο蠓独M(jìn)行的增強(qiáng)和完善。所以,Java是孤立存在的一種語(yǔ)言,而是計(jì)算機(jī)語(yǔ)言多年來(lái)的演變結(jié)果。僅這個(gè)事實(shí)就足以證明Java計(jì)算機(jī)語(yǔ)言歷史上的地位。JavOtInternet程的影響就如同C對(duì)系統(tǒng)編程的影響一樣:革命的力量將改變世界。1.3 Java寸Intere的什么重要InternetJav成為網(wǎng)上最流行的編程語(yǔ)言,同時(shí)JavaIntern的影響也意義深遠(yuǎn)。原因相當(dāng)簡(jiǎn)單:Jav

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論