《Java語(yǔ)言程序設(shè)計(jì)第01章》由會(huì)員分享,可在線閱讀,更多相關(guān)《Java語(yǔ)言程序設(shè)計(jì)第01章(23頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),第,1,章,Java,語(yǔ)言概述,Java,語(yǔ)言是由,Sun,公司于,1995,年推出的一種新的編程語(yǔ)言,它是一種跨平臺(tái)、適合于分布式計(jì)算環(huán)境的純面向?qū)ο笳Z(yǔ)言。,Java,語(yǔ)言及其擴(kuò)展正在逐步成為互聯(lián)網(wǎng)應(yīng)用的規(guī)范,掀起了自,PC,機(jī)以來(lái)的又一次技術(shù)革命。本章主要介紹,Java,語(yǔ)言的起源、特點(diǎn)、簡(jiǎn)單示例等。,1.1 Java,語(yǔ)言的起源和發(fā)展,1.2,面向?qū)ο蟮某绦蛟O(shè)計(jì),1.3 Java,語(yǔ)言的特點(diǎn),1.4 Java,程序的運(yùn)行,Return,1.1 Java,語(yǔ)言的起源和發(fā)展,1.1.1,幾種典型語(yǔ)言的發(fā)
2、展歷程,1.1.2,Java,語(yǔ)言的起源,1.1.3,Java,語(yǔ)言的發(fā)展,Return,一般認(rèn)為,,B,語(yǔ)言導(dǎo)致了,C,語(yǔ)言的誕生、,C,語(yǔ)言演變出,C+,語(yǔ)言,而,Java,語(yǔ)言則明顯帶有,C+,語(yǔ)言的特征。本節(jié)將對(duì),Java,語(yǔ)言的起源和發(fā)展作簡(jiǎn)要介紹。,1.1.1,幾種典型語(yǔ)言的發(fā)展歷程,Return,Java,總是和,C+,聯(lián)系在一起,而,C+,則是從,C,語(yǔ)言派生而來(lái)的,所以,Java,語(yǔ)言繼承了這兩種語(yǔ)言的大部分特性。,Java,的語(yǔ)法是從,C,繼承的,,Java,許多面向?qū)ο筇匦远际艿?C+,的影響。事實(shí)上,,Java,中幾個(gè)自定義的特性都來(lái)自于或可以追溯到它的這些前驅(qū)語(yǔ)言。略
3、有不同的是,,Java,語(yǔ)言完全面向?qū)ο?,從而摒棄了二者的不足之處?Java,語(yǔ)言的誕生與過(guò)去約30年中計(jì)算機(jī)語(yǔ)言的不斷改進(jìn)和發(fā)展密切相關(guān)。基于這些原因,下面我們將簡(jiǎn)要介紹一下這個(gè)發(fā)展歷程。,1,現(xiàn)代編程語(yǔ)言的誕生:,C,語(yǔ)言,2,對(duì)編程方法的新需要:,C+,語(yǔ)言,3,時(shí)機(jī)的到來(lái):,Java,語(yǔ)言的出現(xiàn),1.1.2 Java,語(yǔ)言的起源,Return,Java,是由,James Gosling、Patrick,Naughton,、Chris,Warth,、Ed Frank,以及,Mike Sheridan,等人于1991年在,Sun Microsystems,公司設(shè)計(jì)出來(lái)的,開(kāi)發(fā)第一個(gè)版本花
4、了18個(gè)月時(shí)間。該語(yǔ)言最初名叫“,Oak”,,后來(lái)發(fā)現(xiàn)“,Oak”,已經(jīng)是,Sun,公司另外一種語(yǔ)言的注冊(cè)商標(biāo),于1995年更名為“,Java”,,即太平洋上一個(gè)盛產(chǎn)咖啡的島嶼的名字。從1992 的秋天,Oak,問(wèn)世,到1995春天公開(kāi)發(fā)布,Java,語(yǔ)言,許多人都對(duì),Java,的設(shè)計(jì)和改進(jìn)做出了貢獻(xiàn)。,1.1.3 Java,語(yǔ)言的發(fā)展,Return,自從于1995年被正式推出之后,,Java,語(yǔ)言就以其獨(dú)特的優(yōu)勢(shì)迅猛發(fā)展,經(jīng)過(guò)短短8、9年時(shí)間,成為迄今為止最為優(yōu)秀的面向?qū)ο笳Z(yǔ)言。,Java,也從當(dāng)初的一種語(yǔ)言而逐漸形成一種產(chǎn)業(yè),基于,Java,語(yǔ)言的,J2EE,架構(gòu)已成為微軟.,NET,平臺(tái)
5、的強(qiáng)大競(jìng)爭(zhēng)對(duì)手。,當(dāng)初,,Java,語(yǔ)言最初的發(fā)布不亞于一場(chǎng)革命,但是它并不標(biāo)志著,Java,快速革新時(shí)代的結(jié)束。,在,Java 1.0,發(fā)布后不久,,Java,的設(shè)計(jì)者就已經(jīng)制定出了,Java 1.1、Java 1.2、Java 1.3、Java 1.4、Java 2、Java 2.1.4,版。,1.2,面向?qū)ο蟮某绦蛟O(shè)計(jì),1.2.1,面向?qū)ο蠹夹g(shù)的提出,1.2.2,面向?qū)ο蟮木幊趟枷?1.2.3,面向?qū)ο缶幊痰幕驹瓌t,Return,面向?qū)ο蟮木幊趟枷胗蓙?lái)已久,但真正意義上的純面向?qū)ο缶幊陶Z(yǔ)言目前只有,Java。,本節(jié)將結(jié)合幾種高級(jí)語(yǔ)言對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)思想進(jìn)行簡(jiǎn)要介紹。,1.2.1,面向
6、對(duì)象技術(shù)的提出,Return,我們知道,所有的計(jì)算機(jī)程序均由兩類元素組成:代碼和數(shù)據(jù)。如何實(shí)現(xiàn)這兩類元素的有效結(jié)合而形成可運(yùn)行的程序,是多年來(lái)程序設(shè)計(jì)人員所探索的問(wèn)題。最初,程序的構(gòu)筑一般圍繞“正在發(fā)生什么”而編寫代碼,這種方法被稱為面向過(guò)程的編程。使用這種方法編寫的程序都具有線性執(zhí)行的特點(diǎn)。面向過(guò)程的編程模型可認(rèn)為是代碼作用于數(shù)據(jù),像,Pascal、C,這樣的過(guò)程式語(yǔ)言采用此模型是相當(dāng)成功的。然而,使用面向過(guò)程的方法對(duì)小程序的編寫可能是比較有效的,但當(dāng)程序變得非常大且更為復(fù)雜時(shí),就會(huì)出現(xiàn)種種問(wèn)題,直至失去對(duì)代碼的有效控制。由此對(duì)軟件工程中的編程方法問(wèn)題提出了新的要求。,為了管理不斷增加的復(fù)雜
7、性,另外一種編程方式被提了出來(lái),即面向?qū)ο蟮木幊蹋?OOP,Object-Oriented Programming)。,這種編程方式圍繞“誰(shuí)將受到影響”進(jìn)行,即以代碼的相關(guān)數(shù)據(jù)為核心點(diǎn)進(jìn)行程序編寫。面向?qū)ο蟮木幊讨塾谒臄?shù)據(jù)(即對(duì)象)和為此數(shù)據(jù)嚴(yán)格定義的接口來(lái)組織程序,程序?qū)嶋H上是用數(shù)據(jù)控制對(duì)代碼的訪問(wèn)。這種方式的最大特點(diǎn)是代碼與其相關(guān)數(shù)據(jù)被分離開(kāi)來(lái)進(jìn)行處理,有利于程序規(guī)模的擴(kuò)大,而程序的可維護(hù)性得到增強(qiáng)。,1.2.2,面向?qū)ο蟮木幊趟枷?Return,前面提到的面向過(guò)程程序,它遵循面向過(guò)程的問(wèn)題求解方法,其中心思想是用計(jì)算機(jī)能夠理解的邏輯來(lái)描述和表達(dá)待解決的問(wèn)題及其具體的解決流程。數(shù)據(jù)結(jié)構(gòu)
8、和算法是面向過(guò)程問(wèn)題求解的核心所在。而面向?qū)ο蠹夹g(shù)則代表了一種全新的程序設(shè)計(jì)思路,其觀察、表述、處理問(wèn)題的方法,與傳統(tǒng)的面向過(guò)程的編程方法不同。面向?qū)ο蟮某绦蛟O(shè)計(jì)和問(wèn)題求解力求符合人們?nèi)粘W匀坏乃季S習(xí)慣,盡量分解、降低問(wèn)題的難度和復(fù)雜性,從而提高整個(gè)求解過(guò)程的可監(jiān)測(cè)性、可控制性和可維護(hù)性,以此達(dá)到以較小代價(jià)和較高效率獲得較滿意效果之目的。,面向?qū)ο缶幊桃粋€(gè)實(shí)質(zhì)性的要素是抽象。,1.2.3,面向?qū)ο缶幊痰幕驹瓌t,1,封裝性,封裝(,Encapsulation,),是將代碼及其處理的數(shù)據(jù)綁定在一起的一種編程機(jī)制,該機(jī)制保證了程序和數(shù)據(jù)都不受外部干擾且不被誤用。一個(gè)對(duì)象的基本要素包括屬性和作用在屬
9、性上的操作(方法或事件)。對(duì)象的使用實(shí)現(xiàn)了數(shù)據(jù)抽象,它將一組數(shù)據(jù)和對(duì)這組數(shù)據(jù)的操作結(jié)合成一個(gè)內(nèi)在的整體,不允許外界對(duì)這組數(shù)據(jù)任意進(jìn)行訪問(wèn),這里就用到了封裝的原理。封裝的目的是為了實(shí)現(xiàn)數(shù)據(jù)隱藏和數(shù)據(jù)保護(hù),為對(duì)象提供一個(gè)對(duì)外操作的接口,外界只能從對(duì)象所提供的操作接口來(lái)認(rèn)識(shí)和操作該對(duì)象。,一般說(shuō)來(lái),面向?qū)ο蟮南到y(tǒng)至少需具備三大特性:封裝性、繼承性、多態(tài)性。將封裝、繼承、多態(tài)(包括重載)等面向?qū)ο蠓椒☉?yīng)用于程序的開(kāi)發(fā)工具和開(kāi)發(fā)過(guò)程中,不僅可以加快開(kāi)發(fā)的速度,還可極大地增強(qiáng)程序的可維護(hù)性和可擴(kuò)展性,提高代碼重用率。因此,在面向?qū)ο缶幊踢^(guò)程中需要遵循這三項(xiàng)原則。下面對(duì)它們分別作簡(jiǎn)要介紹。,2.,繼承性,繼
10、承(,Inheritance),是一個(gè)對(duì)象獲得另一個(gè)對(duì)象的屬性的過(guò)程。繼承很重要,因?yàn)樗С至藢蛹?jí)分類的思想。眾所周知,大多數(shù)事物均可按層級(jí)(即從上到下、從高到低)分類管理。顯然,如果不使用層級(jí)的概念,在進(jìn)行描述時(shí),我們就不得不分別定義每個(gè)事物的所有屬性。使用了繼承,一個(gè)對(duì)象就只需定義使它在所屬類中獨(dú)一無(wú)二的屬性即可,因?yàn)樗梢詮乃母割惸抢锢^承其他所有的通用屬性。所以,完全可以這樣說(shuō),正是繼承機(jī)制使一個(gè)對(duì)象成為一個(gè)更具通用性的類的一個(gè)特定實(shí)例成為可能。,繼承是現(xiàn)實(shí)生活中一個(gè)非常容易理解的概念。在面向?qū)ο蟮某绦蛟O(shè)計(jì)方法中,引入繼承機(jī)制的目的在于:其一,避免可公用代碼的重復(fù)開(kāi)發(fā),減少數(shù)據(jù)冗余;其
11、二,增強(qiáng)數(shù)據(jù)的一致性,盡量降低模塊間的耦合程度。,3,多態(tài)性,多態(tài)(,Polymorphism),來(lái)自于希臘語(yǔ),表示“多種形態(tài)”,即允許一個(gè)接口被多個(gè)同類動(dòng)作所使用的特征,具體使用哪個(gè)動(dòng)作與應(yīng)用場(chǎng)合有關(guān)。所謂多態(tài)性就是當(dāng)不同的對(duì)象收到相同的消息時(shí),產(chǎn)生不同動(dòng)作的特性。這里所說(shuō)的消息可以理解為方法或事件。通俗地講,多態(tài)性就是使用一個(gè)名稱來(lái)定義不同的方法,這些方法執(zhí)行類似的但又不同的操作,即以相同的接口來(lái)訪問(wèn)功能不同的函數(shù),從而實(shí)現(xiàn)“一個(gè)接口,多種方法”。,Return,4多態(tài)性、封裝性與繼承性的相互作用,如果使用得當(dāng),在由多態(tài)性、封裝性和繼承性共同組成的編程環(huán)境中可以寫出比面向過(guò)程模型環(huán)境更健壯
12、、擴(kuò)展性更好的程序。精心設(shè)計(jì)的類層級(jí)結(jié)構(gòu)是實(shí)現(xiàn)代碼可重用性的基礎(chǔ);封裝可以使你在不破壞依賴于類公共接口的代碼基礎(chǔ)上對(duì)程序進(jìn)行升級(jí)遷移;而多態(tài)性則有助于編寫清晰、易懂、易讀、易修改的程序。,1.3 Java,語(yǔ)言的特點(diǎn),1.3.1,語(yǔ)言特點(diǎn)概述,1.3.2,Java,語(yǔ)言的具體特點(diǎn),1.3.3,Java,和,C/C+,的比較,Return,作為當(dāng)前一種被廣泛使用的面向?qū)ο缶幊陶Z(yǔ)言,,Java,具有多方面的特點(diǎn)。如果與其他眾多的編程語(yǔ)言作一下比較,會(huì)發(fā)現(xiàn)這些特點(diǎn)正是,Java,語(yǔ)言之所以如此風(fēng)靡的原因所在。雖然,Java,在某些方面(例如資源耗費(fèi))也存在一些不足,但這絲毫不影響,Java,作為目前
13、最優(yōu)秀面向?qū)ο缶幊陶Z(yǔ)言的地位。,1.3.1,語(yǔ)言特點(diǎn)概述,1,Java,的靈魂:字節(jié)碼,2,Java,的內(nèi)涵:豐富的類庫(kù),Return,Java,是一種被廣泛使用的網(wǎng)絡(luò)編程語(yǔ)言,這是一種新的計(jì)算概念。網(wǎng)絡(luò)環(huán)境下的編程語(yǔ)言最需要解決的是可移植性和安全性問(wèn)題。以字節(jié)方式進(jìn)行編碼,使得程序不受運(yùn)行平臺(tái)和環(huán)境的限制成為可能。,Java,語(yǔ)言還提供了豐富的類庫(kù),使程序設(shè)計(jì)人員可以很方便地調(diào)用相關(guān)類建立起自己的系統(tǒng)。主要表現(xiàn)在:,1.3.2 Java,語(yǔ)言的具體特點(diǎn),1.簡(jiǎn)單性,2.面向?qū)ο?3.分布性,4,.,魯棒性,5,.可移植性,Return,Java,作為一種高級(jí)程序設(shè)計(jì)語(yǔ)言,它除具有面向?qū)ο?、?/p>
14、寫簡(jiǎn)單、脫離機(jī)器結(jié)構(gòu)、具有分布性、魯棒性、可移植性、安全性特點(diǎn)外,并且提供了并發(fā)機(jī)制,解釋執(zhí)行具有很高的性能。同時(shí),還具有動(dòng)態(tài)性特點(diǎn)。主要表現(xiàn)在:,6.安全性,7,.,結(jié)構(gòu)中立,8,.高性能,9.多線程,10,.,動(dòng)態(tài)性,1.3.3 Java,和,C/C+,的比較,Return,對(duì)于變量聲明、參數(shù)傳遞、操作符、流控制等,,Java,使用了和,C/C+,相同的風(fēng)格,這使得熟悉,C/C+,的程序員能很方便地進(jìn)行編程語(yǔ)言切換。同時(shí),,Java,實(shí)現(xiàn)并加強(qiáng)了其簡(jiǎn)單、魯棒、安全等特性,也摒棄了,C,和,C+,中許多不合理的地方。主要表現(xiàn)在:,1.頭文件,2.全局變量,3.指針,4,.,內(nèi)存管理,5,.數(shù)
15、據(jù)類型支持,6,.,類型轉(zhuǎn)換,7,.結(jié)構(gòu)和聯(lián)合,8.,預(yù)處理,1.4,Java,程序的運(yùn)行,1.4.1,Java,運(yùn)行環(huán)境的安裝與配置,1.4.2,第一個(gè),Java,程序,1.4.3,兩種類型的,Java,程序,1.4.4,Java,環(huán)境的有關(guān)工具,1.4.5,Java,程序的編寫開(kāi)發(fā)工具,Return,由于,Java,是采用,Java,虛擬機(jī)進(jìn)行解釋執(zhí)行的編程語(yǔ)言,它需要一定的軟件支撐環(huán)境才能夠運(yùn)行起來(lái)。本節(jié)將先介紹,Java,的運(yùn)行環(huán)境,然后介紹,Java,程序的編寫。,1.4.1,Java,運(yùn)行環(huán)境的安裝與配置,Return,編寫并運(yùn)行,Java,程序,需要,Java,開(kāi)發(fā)工具包(,JD
16、K,Java Development Kit),的支持。因此在編寫自己的第一個(gè),Java,程序前,讀者需要先在自己的機(jī)器上安裝,JDK。,到目前為止,,JDK,的發(fā)展經(jīng)歷了,JDK 1.0、JDK 1.1、JDK 1.2、JDK 1.3、JDK 1.4,等幾個(gè)版本。,1.4.2,第一個(gè),Java,程序,說(shuō)明:,保留字,class,來(lái)聲明一個(gè)新的類,其類名為,HelloWorldApp,,,它是一個(gè)公共類(,public,)。,整個(gè)類定義由大括號(hào)對(duì),括起來(lái)。在該類中,定義了一個(gè),main(),方法,其中,public,表示訪問(wèn)權(quán)限,指明所有的類都可以使用這一方法;,static,指明該方法是一個(gè)類方法,它可以通過(guò)類名直接調(diào)用;,void,則指明,main(),方法不返回任何值。對(duì)于一個(gè)應(yīng)用程序來(lái)說(shuō),,main(),方法是必需的,而且必須按照如上的格式來(lái)定義。,Java,解釋器在沒(méi)有生成任何實(shí)例的情況下,以,main(),作為入口來(lái)執(zhí)行程序。,Java,程序中可以定義多個(gè)類,每個(gè)類中可以定義多個(gè)方法,但是最多只有一個(gè)公共類,,main(),方法也只能有一個(gè),作為程序的入口。在,main()