Java語言程序設(shè)計(jì)_第1頁
Java語言程序設(shè)計(jì)_第2頁
Java語言程序設(shè)計(jì)_第3頁
Java語言程序設(shè)計(jì)_第4頁
Java語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩296頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)閱讀全文

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

文檔簡(jiǎn)介

普通高等教育“十一五”國(guó)家級(jí)規(guī)劃教材

普通高等院校計(jì)算機(jī)基礎(chǔ)教育規(guī)劃教材·精品系列

Java語言程序設(shè)計(jì)

(第四版)

李尊朝蘇軍李昕怡編著

副主編趙相坤武博

內(nèi)容簡(jiǎn)介

本書根據(jù)Java技術(shù)的發(fā)展和程序設(shè)計(jì)課程教學(xué)的需要編寫而成。全書共分17章,

內(nèi)容包括Java語言概述、Java語言基礎(chǔ)、基本控制結(jié)構(gòu)、方法、數(shù)組、類和對(duì)象、類的

繼承和多態(tài)機(jī)制、接口和包、異常處理、輸入與輸出、圖形用戶界面設(shè)計(jì)、Swing組件、

Applet程序、多線程、數(shù)據(jù)庫編程、網(wǎng)絡(luò)編程和JSP編程。

本書是作者多年教學(xué)經(jīng)驗(yàn)的結(jié)晶,在全面介紹Java編程原理和基礎(chǔ)知識(shí)的基礎(chǔ)上,

注重培養(yǎng)讀者運(yùn)用面向?qū)ο蠓椒ǚ治龊徒鉀Q實(shí)際問題的能力。書中包含大量精心設(shè)計(jì)并

調(diào)試通過的編程實(shí)例,便于初學(xué)者使用。

本書適合作為普通高等院校各專業(yè)程序設(shè)計(jì)課程的教材,也可供從事軟件開發(fā)以及

相關(guān)領(lǐng)域的工程技術(shù)人員自學(xué)使用。

圖書在版編目(CIP)數(shù)據(jù)

Java語言程序設(shè)計(jì)/李尊朝,蘇軍,李昕怡編著.—4版.—北京:

中國(guó)鐵道出版社有限公司,2020.1

普通高等院校計(jì)算機(jī)基礎(chǔ)教育規(guī)劃教材.精品系列

ISBN978-7-113-26417-8

Ⅰ.①J…Ⅱ.①李…②蘇…③李…Ⅲ.①JAVA語言-程序設(shè)計(jì)-

高等學(xué)校-教材Ⅳ.①TP312.8

中國(guó)版本圖書館CIP數(shù)據(jù)核字(2019)第251666號(hào)

書名:Java語言程序設(shè)計(jì)(第四版)

作者:李尊朝蘇軍李昕怡

策劃:劉麗麗周海燕編輯部電話2003

責(zé)任編輯:劉麗麗徐盼欣

封面設(shè)計(jì):

責(zé)任校對(duì):張玉華

責(zé)任印制:郭向偉

出版發(fā)行:中國(guó)鐵道出版社有限公司(100054,北京市西城區(qū)右安門西街8號(hào))

網(wǎng)址:/51eds/

印刷:國(guó)鐵印務(wù)有限公司

版次:2004年2月第1版2020年1月第4版2020年1月第1次印刷

開本:787mm×1092mm1/16印張:18.75字?jǐn)?shù):414千

書號(hào):ISBN978-7-113-26417-8

定價(jià):49.80元

版權(quán)所有侵權(quán)必究

凡購買鐵道版圖書,如有印制質(zhì)量問題,請(qǐng)與本社教材圖書營(yíng)銷部聯(lián)系調(diào)換。電話:(010)63550836

打擊盜版舉報(bào)電話:(010)51873659

前言

《Java語言程序設(shè)計(jì)》第一版、第二版和第三版分別于2004年、2007年和2013

年出版,至今已經(jīng)重印30余次,銷量逾20萬冊(cè),獲“西安交通大學(xué)優(yōu)秀教材獎(jiǎng)”,

并被教育部評(píng)為普通高等教育“十一五”國(guó)家級(jí)規(guī)劃教材,被數(shù)百所高校及部分省

市自學(xué)考試選作教材,并被很多學(xué)術(shù)論文、學(xué)位論文、程序設(shè)計(jì)類教材和精品課程

網(wǎng)站列為參考文獻(xiàn)。

本版教材特別注重教材的實(shí)用性和易讀性??紤]到Internet中瀏覽器/服務(wù)器

(B/S)模式的重要性及企業(yè)對(duì)Java工程師的招聘要求,本次改版增加了用于B/S程

序設(shè)計(jì)的JSP動(dòng)態(tài)網(wǎng)頁技術(shù);緊跟Java開發(fā)技術(shù)的最新進(jìn)展,增加了目前流行的免

費(fèi)和開源并可用于Windows、Linux、MacOS等所有主流操作系統(tǒng)、功能強(qiáng)大的Java

IDEEclipse的使用方法;為了便于讀者理解編程知識(shí)、提高編程能力,增改了部分

應(yīng)用實(shí)例。

本書共分17章。第1章介紹Java語言的特點(diǎn)、Java程序的開發(fā)環(huán)境及開發(fā)流程。

第2章介紹Java語言的數(shù)據(jù)類型、數(shù)據(jù)運(yùn)算及表達(dá)式。第3章介紹程序的基本結(jié)構(gòu)——

順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。第4章介紹方法的聲明和調(diào)用。第5章介紹數(shù)組

和字符串的基本知識(shí)及大量應(yīng)用實(shí)例。第6~8章介紹面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù),包括

類和對(duì)象的基本知識(shí)、類的繼承和多態(tài)機(jī)制、實(shí)現(xiàn)多重繼承的接口、用于組織類和

接口的包技術(shù)。第9章介紹Java的異常處理機(jī)制、異常的捕獲及拋出方法。第10章

介紹Java的流式輸入/輸出功能,包括流類、標(biāo)準(zhǔn)輸入/輸出及文件操作技術(shù)。第11

章和第12章介紹Java的圖形界面技術(shù),包括AWT組件、布局管理、事件處理技術(shù)

及最新的Swing組件。第13章介紹Applet技術(shù),包括Applet的運(yùn)行機(jī)制和應(yīng)用實(shí)例。

第14章介紹Java特有的多線程技術(shù),包括多線程機(jī)制、多線程的實(shí)現(xiàn)方法和調(diào)度技

術(shù)。第15章介紹數(shù)據(jù)庫編程技術(shù),包括數(shù)據(jù)庫的基本知識(shí)、結(jié)構(gòu)化查詢語言SQL、

Java數(shù)據(jù)庫連接技術(shù)JDBC以及數(shù)據(jù)庫編程的基本技術(shù)。第16章介紹Java強(qiáng)大的網(wǎng)

絡(luò)編程技術(shù),包括TCP/IP通信協(xié)議等網(wǎng)絡(luò)基礎(chǔ)知識(shí)、基于TCP和UDP網(wǎng)絡(luò)層協(xié)議

及HTTP和FTP等應(yīng)用層協(xié)議的網(wǎng)絡(luò)程序開發(fā)技術(shù),增加了精心設(shè)計(jì)的應(yīng)用實(shí)例,

使讀者易于理解和掌握網(wǎng)絡(luò)程序的開發(fā)技術(shù)。第17章介紹用于開發(fā)安全且跨平臺(tái)動(dòng)

態(tài)網(wǎng)站的JSP編程技術(shù),包括Web程序基礎(chǔ)知識(shí)、JSP動(dòng)態(tài)網(wǎng)頁的標(biāo)記和元素、

JavaBean和數(shù)據(jù)庫程序開發(fā)技術(shù),是本版中新增加的一章。

Java語言程序設(shè)計(jì)

編者根據(jù)多年的教學(xué)和軟件開發(fā)經(jīng)驗(yàn),結(jié)合眾多使用本教材授課教師和廣大讀

者的反饋信息,對(duì)教材的內(nèi)容取舍、組織編排和典型實(shí)例再次進(jìn)行了精心設(shè)計(jì)和篩

選。本書遵循由淺入深、循序漸進(jìn)的原則,內(nèi)容組織突出實(shí)用性和編程能力培養(yǎng),

寫作風(fēng)格注重語言通俗易懂,避免抽象晦澀。所有應(yīng)用實(shí)例都配有語句功能和編程

思想的詳細(xì)講解,閱讀教材就像聽教師講課一樣清晰明了。

本書的配套教材《Java語言程序設(shè)計(jì)例題解析與實(shí)驗(yàn)指導(dǎo)》(第四版)由中國(guó)

鐵道出版社有限公司同期出版。配套教材內(nèi)容包括典型例題解析和課后習(xí)題解答、

上機(jī)實(shí)驗(yàn)及各實(shí)驗(yàn)程序代碼、綜合實(shí)例。

為方便教師授課,減輕教師備課負(fù)擔(dān),提高教學(xué)質(zhì)量,本書為教師免費(fèi)提供電

子教案,包括教師授課使用的幻燈片和本書的全部實(shí)例程序源代碼。

本書由李尊朝、蘇軍、李昕怡編著。第1~14章由李尊朝編寫,第15章由蘇軍

編寫,第16章和17章由李昕怡編寫。本書在編寫過程中,參閱了大量書籍和網(wǎng)站

等參考資料,得到了西安交通大學(xué)同仁和中國(guó)鐵道出版社有限公司編輯的大力支持

和幫助,在此一并表示感謝。

盡管書稿幾經(jīng)修改,仍難免存在疏漏和不妥之處,懇請(qǐng)業(yè)界同仁及讀者朋友提

出寶貴意見,以便修訂再版時(shí)進(jìn)一步完善。

編者

2019年10月

目錄

第1章Java語言概述1

1.1程序設(shè)計(jì)語言1

1.2面向?qū)ο蟮某绦蛟O(shè)計(jì)語言——Java2

1.2.1Java語言的發(fā)展歷史3

1.2.2Java語言的特點(diǎn)3

1.2.3Java語言與C/C++語言的比較5

1.3Java語言的開發(fā)和運(yùn)行環(huán)境6

1.3.1JDK的安裝6

1.3.2JDK的設(shè)置6

1.4開發(fā)和運(yùn)行Java程序的步驟7

1.4.1選擇編輯工具7

1.4.2編譯和運(yùn)行Java程序8

1.5Eclipse9

1.5.1安裝和啟動(dòng)Eclipse9

1.5.2Eclipse環(huán)境下的程序開發(fā)11

習(xí)題14

第2章Java語言基礎(chǔ)15

2.1標(biāo)識(shí)符和關(guān)鍵字15

2.2數(shù)據(jù)類型與常量、變量16

2.2.1數(shù)據(jù)類型16

2.2.2基本數(shù)據(jù)類型16

2.2.3常量18

2.2.4變量19

2.3運(yùn)算符和表達(dá)式21

2.3.1運(yùn)算符22

2.3.2表達(dá)式26

習(xí)題29

第3章基本控制結(jié)構(gòu)31

I

Java語言程序設(shè)計(jì)

3.1語句及程序結(jié)構(gòu)31

3.2順序結(jié)構(gòu)32

3.3選擇結(jié)構(gòu)33

3.3.1if語句34

3.3.2switch語句36

3.4循環(huán)結(jié)構(gòu)39

3.4.1while語句39

3.4.2do…while語句40

3.4.3for語句41

3.4.4多重循環(huán)43

3.5跳轉(zhuǎn)語句45

習(xí)題46

第4章方法47

4.1方法聲明47

4.2方法調(diào)用48

4.3參數(shù)傳遞50

4.4遞歸51

習(xí)題53

第5章數(shù)組55

5.1一維數(shù)組55

5.1.1一維數(shù)組的聲明55

5.1.2一維數(shù)組的初始化56

5.2二維數(shù)組57

5.2.1二維數(shù)組的聲明57

5.2.2二維數(shù)組的初始化58

5.3數(shù)組的基本操作60

5.3.1數(shù)組的引用60

5.3.2數(shù)組的復(fù)制60

5.3.3數(shù)組的輸出61

5.4數(shù)組應(yīng)用舉例63

5.5數(shù)組參數(shù)66

5.6字符串69

5.6.1字符數(shù)組與字符串69

5.6.2字符串的相關(guān)概念70

II

目錄

5.6.3字符串操作71

5.6.4字符串?dāng)?shù)組73

習(xí)題74

第6章類和對(duì)象75

6.1類和對(duì)象概述75

6.1.1面向?qū)ο蟮幕靖拍?5

6.1.2類的聲明75

6.1.3對(duì)象的創(chuàng)建和使用76

6.1.4構(gòu)造方法和對(duì)象的初始化78

6.1.5對(duì)象銷毀81

6.2類的封裝82

6.2.1訪問權(quán)限82

6.2.2類成員84

習(xí)題89

第7章類的繼承和多態(tài)機(jī)制90

7.1類的繼承90

7.1.1繼承的基本概念90

7.1.2繼承的實(shí)現(xiàn)91

7.1.3super和this引用93

7.2類的多態(tài)性96

7.2.1方法重載97

7.2.2方法覆蓋98

7.3final類和final成員99

習(xí)題101

第8章接口和包102

8.1抽象類和方法102

8.2接口105

8.2.1聲明接口105

8.2.2實(shí)現(xiàn)接口106

8.3包111

8.3.1包的概念112

8.3.2包的聲明和導(dǎo)入112

習(xí)題117

III

Java語言程序設(shè)計(jì)

第9章異常處理118

9.1Java異常處理機(jī)制118

9.2異常處理方式119

9.2.1try…catch…finally結(jié)構(gòu)119

9.2.2拋出異常122

9.2.3自定義異常類124

習(xí)題126

第10章輸入與輸出127

10.1輸入/輸出類庫127

10.1.1流127

10.1.2輸入/輸出流類128

10.2標(biāo)準(zhǔn)輸入/輸出及標(biāo)準(zhǔn)錯(cuò)誤132

10.2.1標(biāo)準(zhǔn)輸入132

10.2.2標(biāo)準(zhǔn)輸出135

10.2.3標(biāo)準(zhǔn)錯(cuò)誤135

10.3文件操作135

10.3.1文件管理136

10.3.2基于字節(jié)流的文件操作137

10.3.3基于字符流的文件操作142

習(xí)題146

第11章圖形用戶界面設(shè)計(jì)147

11.1AWT組件概述147

11.2布局管理153

11.2.1BorderLayout類153

11.2.2FlowLayout類154

11.2.3GridLayout類156

11.3事件處理157

11.3.1委托事件模型157

11.3.2事件類和監(jiān)聽器接口159

11.3.3處理ActionEvent事件162

11.3.4處理ItemEvent事件163

11.3.5處理TextEvent事件165

11.3.6處理KeyEvent事件166

11.3.7處理MouseEvent事件169

IV

目錄

11.3.8處理WindowEvent事件174

11.4繪圖175

習(xí)題177

第12章Swing組件178

12.1Swing組件概述178

12.2窗口179

12.3標(biāo)簽180

12.4按鈕180

12.5單選按鈕和復(fù)選框181

12.6文本編輯組件185

12.7列表框和組合框186

12.8菜單189

習(xí)題192

第13章Applet程序193

13.1Applet簡(jiǎn)介193

13.1.1Applet類193

13.1.2Applet程序的運(yùn)行過程193

13.1.3Applet程序的建立和運(yùn)行194

13.2Applet程序舉例195

習(xí)題199

第14章多線程200

14.1Java的多線程機(jī)制200

14.1.1線程的生命周期200

14.1.2多線程的實(shí)現(xiàn)方法201

14.2通過Thread類實(shí)現(xiàn)多線程201

14.3通過Runnable接口實(shí)現(xiàn)多線程202

14.4線程等待203

14.5線程同步206

習(xí)題208

第15章數(shù)據(jù)庫編程209

15.1數(shù)據(jù)庫簡(jiǎn)介209

15.1.1關(guān)系型數(shù)據(jù)庫209

15.1.2SQL簡(jiǎn)介210

V

Java語言程序設(shè)計(jì)

15.2使用JDBC連接數(shù)據(jù)庫212

15.2.1JDBC簡(jiǎn)介212

15.2.2JDBC驅(qū)動(dòng)程序212

15.3建立數(shù)據(jù)庫和數(shù)據(jù)源213

15.3.1建立數(shù)據(jù)庫213

15.3.2建立數(shù)據(jù)源215

15.4Java數(shù)據(jù)庫編程216

15.4.1數(shù)據(jù)庫編程的一般過程216

15.4.2數(shù)據(jù)庫編程實(shí)例218

習(xí)題223

第16章網(wǎng)絡(luò)編程225

16.1網(wǎng)絡(luò)基礎(chǔ)225

16.1.1通信協(xié)議225

16.1.2TCP和UDP226

16.1.3URL227

16.1.4Java的網(wǎng)絡(luò)功能228

16.2基于URL的網(wǎng)絡(luò)程序228

16.2.1URL類228

16.2.2URLConnection類231

16.3InetAddress類233

16.3.1創(chuàng)建InetAddress類對(duì)象233

16.3.2獲取域名和IP地址234

16.4基于Socket的程序236

16.4.1TCP流式Socket236

16.4.2UDP數(shù)據(jù)報(bào)Socket242

習(xí)題251

第17章JSP編程252

17.1Web程序概述252

17.2HTML基礎(chǔ)253

17.2.1HTML文件結(jié)構(gòu)253

17.2.2HTML標(biāo)記254

17.3JSP開發(fā)和運(yùn)行環(huán)境256

17.4JSP語法265

17.4.1JSP元素語法265

VI

目錄

17.4.2JSP腳本元素265

17.4.3JSP指令元素269

17.4.4JSP動(dòng)作元素271

17.4.5JSP注釋273

17.4.6轉(zhuǎn)義字符274

17.5JSP內(nèi)建對(duì)象275

17.6JavaBean278

17.7應(yīng)用數(shù)據(jù)庫280

習(xí)題285

參考文獻(xiàn)287

VII

第1章

Java語言概述

Java語言是由Sun公司(已被Oracle公司收購)于1995年5月23日正式推出的純

面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,其集安全性、簡(jiǎn)單性、易用性和平臺(tái)無關(guān)性于一身,特別適

合于網(wǎng)絡(luò)環(huán)境下編程使用。

JDK提供了Java程序的命令行編譯和運(yùn)行方式,可以使用的集成開發(fā)環(huán)境有

JBuilder、Eclipse、JCreator等。

1.1程序設(shè)計(jì)語言

電子計(jì)算機(jī)是一種機(jī)器,要借助計(jì)算機(jī)完成人類的某種思維活動(dòng),必須將其用計(jì)算

機(jī)能理解和執(zhí)行的形式語言來描述,這種語言就稱為程序設(shè)計(jì)語言。程序設(shè)計(jì)語言和人

類使用的自然語言之間存在較大差距,自從1946年第一臺(tái)電子計(jì)算機(jī)問世以來,程序設(shè)

計(jì)語言的發(fā)展變遷就是為了縮小這一差距。

1.機(jī)器語言

計(jì)算機(jī)由電子器件組成,電子器件最容易表達(dá)的是電位的高和低或電流的通和斷兩

種穩(wěn)定狀態(tài),可以用0和1兩種符號(hào)表示這兩種狀態(tài),這便是最早的程序設(shè)計(jì)語言——

機(jī)器語言的基本單位。用機(jī)器語言編寫的程序由0和1組成,計(jì)算機(jī)能理解并直接執(zhí)行。

然而,由0和1組成的0、1串沒有絲毫的形象意義,人們難以記憶和理解,所以用機(jī)器

語言編寫程序效率很低,并且容易出錯(cuò)。

2.匯編語言

為了克服機(jī)器語言抽象、難以理解和記憶的缺點(diǎn),人們用便于理解和記憶的符號(hào)來

代替0、1串,這便是匯編語言。匯編語言使用助記詞編寫程序,較機(jī)器語言更接近自然

語言。匯編語言涉及大量的機(jī)器細(xì)節(jié),是與具體機(jī)器硬件有關(guān)的語言,是一種面向機(jī)器

的語言。只要更換或升級(jí)機(jī)器硬件,就得重新編寫程序。

3.高級(jí)語言

雖然匯編語言較機(jī)器語言便于理解和記憶,但卻像機(jī)器語言一樣,與具體的機(jī)器指

令系統(tǒng)有關(guān),離不開計(jì)算機(jī)的硬件特性。用它們編寫程序復(fù)雜度高,效率低下,可維護(hù)

性和可移植性差。為了從根本上擺脫語言對(duì)機(jī)器的依賴,經(jīng)過多年的潛心研究,與具體

機(jī)器指令系統(tǒng)無關(guān)、表達(dá)方式接近自然語言的新一代語言問世。新一代語言采用具有一

定含義的數(shù)據(jù)命名和人們易于理解的執(zhí)行語句,且屏蔽了機(jī)器細(xì)節(jié),將這種語言稱為高級(jí)

1

Java語言程序設(shè)計(jì)

語言,而將與具體機(jī)器細(xì)節(jié)有關(guān)的機(jī)器語言和匯編語言稱為低級(jí)語言。高級(jí)語言一經(jīng)推出

立刻受到廣泛歡迎。受市場(chǎng)需求驅(qū)動(dòng),各種高級(jí)語言相繼問世,極大地推動(dòng)了計(jì)算機(jī)應(yīng)用

及計(jì)算機(jī)技術(shù)的發(fā)展。

此后,隨著結(jié)構(gòu)化數(shù)據(jù)、結(jié)構(gòu)化語句、數(shù)據(jù)抽象和過程抽象等概念的提出,高級(jí)語

言逐步向結(jié)構(gòu)化程序設(shè)計(jì)方向發(fā)展,進(jìn)一步縮小了計(jì)算機(jī)語言和自然語言的距離。20世

紀(jì)70年代到80年代,結(jié)構(gòu)化程序設(shè)計(jì)語言非常流行,成為當(dāng)時(shí)軟件開發(fā)的主流技術(shù)。

以結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)為代表的高級(jí)語言是一種面向過程的語言。面向過程的語言可以用

計(jì)算機(jī)能理解的邏輯表達(dá)問題的具體解決過程,然而它將數(shù)據(jù)和過程分離為獨(dú)立的實(shí)體,

使程序中的數(shù)據(jù)和操作不能有效地組織在一起,很難把具有多種相互聯(lián)系的復(fù)雜事物表

述清楚。當(dāng)數(shù)據(jù)結(jié)構(gòu)發(fā)生輕微變化時(shí),處理這些數(shù)據(jù)的算法也要做相應(yīng)的修改。因而用

這種程序設(shè)計(jì)方法編寫的軟件重用性差。為了較好地解決軟件的重用性問題,使數(shù)據(jù)與

程序始終保持相容,人們提出了面向?qū)ο蟪绦蛟O(shè)計(jì)(ObjectOrientedProgramming,OOP)

方法。

面向?qū)ο蟪绦蛟O(shè)計(jì)語言能更好地描述客觀事物及其相互聯(lián)系,追求對(duì)現(xiàn)實(shí)世界的直

接模擬,具體體現(xiàn)在:

①客觀世界由具體的事物構(gòu)成,每個(gè)事物都具有自己的一組靜態(tài)特征(屬性)和一

組動(dòng)態(tài)特征(行為)。在面向?qū)ο蟪绦蛟O(shè)計(jì)語言中,將客觀事物抽象為對(duì)象(Object),

用一組數(shù)據(jù)描述對(duì)象的靜態(tài)特征(屬性),用一組方法刻畫對(duì)象的動(dòng)態(tài)特征。

②客觀世界中的事物既具有特殊性,又具有共同性。人類認(rèn)識(shí)客觀世界的基本方法

之一就是根據(jù)事物的共同性將事物進(jìn)行分類。面向?qū)ο蟪绦蛟O(shè)計(jì)語言用類來表示一組具

有相同屬性和方法的對(duì)象。

③在同一類事物中,除了具有共性外,每個(gè)事物又具有自己的特殊性。面向?qū)ο蟪?/p>

序設(shè)計(jì)語言用父類與子類的概念來描述。父類中描述事物的共性,子類中描述個(gè)性。

④客觀世界中的事物是一個(gè)獨(dú)立的整體,外部常常不關(guān)心其內(nèi)部的具體細(xì)節(jié)。面向

對(duì)象程序設(shè)計(jì)語言通過封裝機(jī)制把對(duì)象的屬性和方法結(jié)合為一個(gè)整體,并且屏蔽了對(duì)象

的內(nèi)部細(xì)節(jié)。

⑤客觀世界中的一個(gè)事物可能與其他事物之間存在某種行為上的聯(lián)系。面向?qū)ο蟪?/p>

序設(shè)計(jì)語言通過消息連接來表示對(duì)象之間的這種動(dòng)態(tài)聯(lián)系。

綜上所述,面向?qū)ο蟪绦蛟O(shè)計(jì)語言使程序能夠比較直接地反映客觀世界的本來面目,

使軟件開發(fā)人員能夠運(yùn)用人類認(rèn)識(shí)事物所采用的一般思維方法來進(jìn)行軟件開發(fā)。

和其他計(jì)算機(jī)語言比較,面向?qū)ο蟪绦蛟O(shè)計(jì)語言和人類使用的自然語言之間的差距

是最小的,是當(dāng)今軟件開發(fā)和應(yīng)用的主流技術(shù)。

1.2面向?qū)ο蟮某绦蛟O(shè)計(jì)語言——Java

目前,應(yīng)用廣泛的Internet將世界上成千上萬的計(jì)算機(jī)子網(wǎng)連接成一個(gè)超網(wǎng),而這

些子網(wǎng)由世界各地各種不同型號(hào)、不同規(guī)模、使用不同操作系統(tǒng)、具有不同應(yīng)用平臺(tái)的

計(jì)算機(jī)組成。為了發(fā)揮Internet的巨大作用,需要一種能運(yùn)行在各種計(jì)算機(jī)上、具有平

2

第1章Java語言概述

臺(tái)無關(guān)性和高移植性的語言。Java語言以其面向?qū)ο?、平臺(tái)無關(guān)、多線程、安全可靠等

特性成為Internet時(shí)代程序設(shè)計(jì)語言中的佼佼者。

1.2.1Java語言的發(fā)展歷史

Java語言的發(fā)展歷史可以追溯到1990年。當(dāng)時(shí)Sun公司為了發(fā)展消費(fèi)類電子產(chǎn)品而

進(jìn)行了一個(gè)名為Green的項(xiàng)目計(jì)劃。這個(gè)計(jì)劃的負(fù)責(zé)人是JamesGosling,起初他用具有

面向?qū)ο筇卣鞯腃++語言編寫嵌入式軟件,可以放在面包機(jī)或個(gè)人數(shù)字助理(Personal

DigitalAssistant,PDA)等小型電子消費(fèi)設(shè)備里,以使設(shè)備變得更為“聰明”,更具備人

工智能。但后來發(fā)現(xiàn)C++并不適合這類任務(wù),因?yàn)镃++常會(huì)使系統(tǒng)失效。尤其在內(nèi)存管理

方面,C++采用直接地址訪問方式,需要程序員記錄并管理內(nèi)存資源。這造成程序員編程

的極大負(fù)擔(dān),并可能產(chǎn)生多個(gè)bug。面包機(jī)上的程序錯(cuò)誤可能使面包機(jī)燒壞甚至爆炸。

為了解決此類問題,Gosling決定開發(fā)一種新的語言,并取名為Oak。它采用了大部

分與C++類似的語法,對(duì)可能具備危險(xiǎn)性的功能加以改進(jìn)。例如,將內(nèi)存管理改為由語

言自己進(jìn)行管理,以減少程序員的負(fù)擔(dān)及可能發(fā)生的錯(cuò)誤。Oak是一種可移植的語言,

也是一種平臺(tái)獨(dú)立的語言,能夠在各種芯片上執(zhí)行,可以降低設(shè)備的研發(fā)成本。

1994年,Oak的技術(shù)已日趨成熟,這時(shí)Internet也開始蓬勃發(fā)展。Oak研發(fā)小組發(fā)

現(xiàn)Oak很適合作為一種Internet上的程序設(shè)計(jì)語言,因此開發(fā)了一個(gè)能與Oak配合使用

的瀏覽器——Hotjava。實(shí)踐證明,Oak的確能用于Internet上的程序開發(fā)。鑒于Oak已

經(jīng)被其他產(chǎn)品注冊(cè)使用,研發(fā)小組就以常飲用的咖啡Java重新命名該產(chǎn)品。此后,Java

就隨著Internet的發(fā)展而快速發(fā)展起來。

1.2.2Java語言的特點(diǎn)

Java語言是一種簡(jiǎn)單、面向?qū)ο蟆踩?、平臺(tái)獨(dú)立、多線程、具有網(wǎng)絡(luò)功能、執(zhí)行效率

較高的語言。

1.簡(jiǎn)單性

Java語言簡(jiǎn)單高效,基本Java系統(tǒng)(編譯器和解釋器)所占空間不足250KB。由于

Java最初是為了對(duì)家用電器進(jìn)行集成控制而設(shè)計(jì)的,因而具備簡(jiǎn)單明了的特征。

2.面向?qū)ο?/p>

面向?qū)ο蠹夹g(shù)是現(xiàn)代軟件工業(yè)的一次革新,提高了軟件的模塊化程度和重復(fù)使用率,

縮短了軟件開發(fā)時(shí)間,降低了開發(fā)成本。在Java之前,雖然已經(jīng)有面向?qū)ο蟮某绦蛟O(shè)計(jì)

語言問世,但有些(如C++)并不是完全的面向?qū)ο?,而是面向過程和面向?qū)ο蟮幕旌?/p>

體。Java則是完全面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。

3.安全性

Java語言是可以用在網(wǎng)絡(luò)及分布環(huán)境下的網(wǎng)絡(luò)程序設(shè)計(jì)語言。在網(wǎng)絡(luò)環(huán)境下,語言

的安全性變得更為重要。Java語言提供了許多安全機(jī)制來保證其使用上的安全性。

4.平臺(tái)獨(dú)立

平臺(tái)獨(dú)立指程序不受操作平臺(tái)的限制,可以應(yīng)用在各種平臺(tái)上。Java源程序經(jīng)過編

譯后生成字節(jié)碼Byte(Code)文件,而字節(jié)碼與具體的計(jì)算機(jī)無關(guān)。只要計(jì)算機(jī)安裝了

3

Java語言程序設(shè)計(jì)

能解釋執(zhí)行字節(jié)碼的Java虛擬機(jī)(JavaVirtualMachine,JVM),就可以執(zhí)行字節(jié)碼文件,

從而實(shí)現(xiàn)Java的平臺(tái)獨(dú)立性。

為了理解Java語言的平臺(tái)獨(dú)立性,在此對(duì)Java虛擬機(jī)做一下簡(jiǎn)單介紹。大部分高級(jí)

語言的源程序必須經(jīng)過編譯或解釋程序翻譯成機(jī)器語言才能在計(jì)算機(jī)上執(zhí)行。例如,C、

C++等屬于編譯型語言,而BASIC和Lisp屬于解釋型語言。

然而,Java程序卻比較特殊,它必須先經(jīng)過編譯,再經(jīng)過解釋才能執(zhí)行。通過編譯

器,Java語言源程序轉(zhuǎn)換成與平臺(tái)無關(guān)的中間編碼,Java稱之為字節(jié)碼。字節(jié)碼再經(jīng)過

解釋器的解釋,轉(zhuǎn)換為機(jī)器碼,便可在計(jì)算機(jī)上運(yùn)行。

圖1-1說明了Java程序的執(zhí)行流程。

圖1-1Java程序的執(zhí)行流程

任何可以運(yùn)行Java字節(jié)碼的程序都可以看作Java的虛擬機(jī),如瀏覽器和Java的開

發(fā)工具等都可以看作JVM的一部分。

字節(jié)碼的最大好處是可跨平臺(tái)運(yùn)行,也就是說,字節(jié)碼使“編寫一次,到處運(yùn)行(Write

Once,RunAnywhere)”的夢(mèng)想成真。當(dāng)將Java的源程序用任何一種Java編譯器編譯成字

節(jié)碼后,便可運(yùn)行在任何含有JVM的平臺(tái)上,無論是Windows、MacOS還是UNIX,這

種跨平臺(tái)特性(見圖1-2),是Java語言快速普及的主要原因之一。

圖1-2跨平臺(tái)特性

5.多線程

Java語言具備內(nèi)置的多線程功能,可以將一個(gè)程序的不同程序段設(shè)置為不同的線程,

使各線程并發(fā)、獨(dú)立執(zhí)行,提高系統(tǒng)的運(yùn)行效率。

6.網(wǎng)絡(luò)功能

Java語言能從全球的網(wǎng)絡(luò)資源取得所需信息,如數(shù)據(jù)文件、影像文件、聲音文件等,

并對(duì)所得信息進(jìn)行處理。所以說Java語言是一種網(wǎng)絡(luò)語言。

4

第1章Java語言概述

7.執(zhí)行效率

Java的字節(jié)碼需要經(jīng)過Java虛擬機(jī)解釋成機(jī)器碼才能執(zhí)行,所以速度較慢。但是隨

著JVM技術(shù)的進(jìn)步,其執(zhí)行速度直逼C與C++。

1.2.3Java語言與C/C++語言的比較

為了便于程序員特別是熟悉C/C++語言的程序員易于學(xué)習(xí)和使用Java語言,Java語

言設(shè)計(jì)得和C/C++語言極為相似,但它和C/C++語言仍然有許多不同之處。

首先,Java語言是一種“直譯”式語言,即用Java編寫的程序首先被編譯成字節(jié)碼,

再通過JVM解釋成機(jī)器碼,而不像C/C++程序只要一經(jīng)編譯即成為機(jī)器碼。這是Java

程序在運(yùn)行速度上慢于C/C++程序的主要因素。

字節(jié)碼是Java語言專有的一種中間碼,必須通過JVM來解釋才能運(yùn)行。在不同的平

臺(tái)上,Java語言有不同的JVM,使Java字節(jié)碼可以跨越平臺(tái)的限制,在不同的平臺(tái)上運(yùn)

行。但C/C++程序不具備平臺(tái)獨(dú)立性。

Java與C/C++的另一個(gè)不同點(diǎn)是Java語言沒有指針類型。C/C++的指針為用戶帶來

許多便利,但也為系統(tǒng)帶來許多危害。用戶可以通過指針對(duì)內(nèi)存進(jìn)行讀取和更改等操作,

這樣一來,用戶能很清楚地知道數(shù)據(jù)存放在哪一個(gè)內(nèi)存地址,也可以很迅速地通過內(nèi)存

地址的調(diào)用來獲得系統(tǒng)信息。這樣的做法卻很容易因程序員的邏輯錯(cuò)誤而造成內(nèi)存的覆

蓋,進(jìn)而導(dǎo)致程序遭到破壞,也可能會(huì)讓黑客利用C/C++編寫破壞系統(tǒng)文件的計(jì)算機(jī)病

毒,影響系統(tǒng)安全。

C/C++的指針造成程序在穩(wěn)定性和安全性上的漏洞,因此Java廢除了指針,改用對(duì)

象參考方式存取對(duì)象數(shù)據(jù),要獲得對(duì)象的數(shù)據(jù)必須通過JVM,由JVM來保護(hù)系統(tǒng)的安

全性。

Java與C++在繼承方面也有所不同。C++允許多重繼承,而Java僅允許單一繼承,

以嚴(yán)格限制類繼承關(guān)系,而使用接口技術(shù)來實(shí)現(xiàn)多重繼承的功能。

Java和C/C++的差異如表1-1所示。

表1-1Java和C/C++的差異

比較內(nèi)容JavaCC++

是否直譯式是否,編譯式否,編譯式

否,產(chǎn)生一種接近于機(jī)器碼

編譯后是否產(chǎn)生機(jī)器碼是是

的字節(jié)碼

否,必須根據(jù)計(jì)算機(jī)否,必須根據(jù)計(jì)算機(jī)平

是否跨平臺(tái)是

平臺(tái)改變程序臺(tái)改變程序

運(yùn)行速度比C/C++稍慢快快

是否有指針類型否,使用對(duì)象參考來代替指針是是

是否具備繼承功能允許單一繼承否允許多重繼承

如上所述,Java從C++演變而來,保留了C++的許多優(yōu)點(diǎn),去除了C++中易產(chǎn)生錯(cuò)

誤的功能,簡(jiǎn)化了內(nèi)存管理,減輕了程序員進(jìn)行內(nèi)存管理的負(fù)擔(dān)。

5

Java語言程序設(shè)計(jì)

1.3Java語言的開發(fā)和運(yùn)行環(huán)境

JDK是Sun公司推出的Java開發(fā)工具包,包括Java類庫、Java編譯器、Java解釋器、

Java運(yùn)行時(shí)環(huán)境和Java命令行工具。JDK提供了Java程序的命令行編譯和運(yùn)行方式,但

沒有提供程序的編輯環(huán)境,更沒有提供可視化的集成開發(fā)環(huán)境(IntegratedDevelopment

Environment,IDE)。有很多其他公司提供的集成開發(fā)環(huán)境可供選擇,如Borland公司的

JBuilder、Xinox公司的JCreator,以及開放源代碼的Eclipse等,它們都是建立在JDK基

礎(chǔ)之上的。

JDK是Java程序編譯和運(yùn)行的基本平臺(tái),本節(jié)首先介紹JDK的安裝、設(shè)置以及Java

程序的命令行編譯和運(yùn)行方式。

1.3.1JDK的安裝

目前JDK主要分為3種版本:JavaSE、JavaEE和JavaME。

JavaSE稱為Java標(biāo)準(zhǔn)版或標(biāo)準(zhǔn)平臺(tái),提供了標(biāo)準(zhǔn)的JDK開發(fā)平臺(tái),利用該平臺(tái)可

以開發(fā)Java桌面應(yīng)用程序和低端服務(wù)器應(yīng)用程序,也可以開發(fā)JavaApplet程序。

JavaEE稱為Java企業(yè)版或企業(yè)平臺(tái),使用JavaEE可以構(gòu)建企業(yè)級(jí)的服務(wù)應(yīng)用,

JavaEE平臺(tái)包含JavaSE平臺(tái),并增加了附加類庫,以便支持目錄管理、交易管理等功能。

JavaME稱為Java微型版或小型平臺(tái),是一種很小的Java運(yùn)行環(huán)境,用于嵌入式的

消費(fèi)產(chǎn)品中,如移動(dòng)電話、掌上電腦或其他無線設(shè)備等。

由于Sun公司已經(jīng)被Oracle公司收購,現(xiàn)在需要在Oracle公司的網(wǎng)站下載JDK。登

錄Oracle公司網(wǎng)站,能夠看到有關(guān)JavaSE、JavaEE和JavaME的

信息。無論哪種Java運(yùn)行平臺(tái),都包含相應(yīng)的Java虛擬機(jī),虛擬機(jī)負(fù)責(zé)將字節(jié)碼文件加

載到內(nèi)存,然后采用解釋方式執(zhí)行字節(jié)碼文件。

學(xué)習(xí)Java通常從JavaSE開始,因此本節(jié)基于JavaSE來安裝Java平臺(tái)。用戶可登

錄Oracle公司網(wǎng)站(http://www.)免費(fèi)下載。下載軟件是自解壓的壓縮文件,

運(yùn)行該壓縮文件,按照屏幕提示操作,即可完成安裝。

1.3.2JDK的設(shè)置

為了方便編譯和運(yùn)行Java程序,需要對(duì)JDK進(jìn)行設(shè)置。設(shè)置方法非常簡(jiǎn)單,只需要

對(duì)Path和Classpath這兩個(gè)環(huán)境變量進(jìn)行正確設(shè)置。本書以jdk-7u9-windows-i586.exe為

例說明JDK的設(shè)置。文件jdk-7u9-windows-i586.exe將JDK的默認(rèn)安裝文件夾設(shè)置為

C:\ProgramFiles\Java\jdk1.7.0_09,需要給Path增加“C:\ProgramFiles\Java\jdk1.7.0_09\bin”

路徑,給Classpath增加“.;C:\ProgramFiles\Java\jdk1.7.0_09\lib\tools.jar;C:\Program

Files\java\jdk1.7.0_09\lib\dt.jar”路徑,其中“.”表示當(dāng)前文件夾。

如果使用的操作系統(tǒng)是Windows7,對(duì)Path的設(shè)置步驟如下:

①右擊“計(jì)算機(jī)”圖標(biāo),在彈出的快捷菜單中選擇“屬性”命令,彈出“系統(tǒng)”對(duì)

話框;單擊“高級(jí)系統(tǒng)”設(shè)置選項(xiàng),彈出“系統(tǒng)屬性”對(duì)話框,選擇“高級(jí)”選項(xiàng)卡,

如圖1-3所示。單擊“環(huán)境變量”按鈕,彈出“環(huán)境變量”對(duì)話框,如圖1-4所示。在

6

第1章Java語言概述

“系統(tǒng)變量”列表框中選擇Path變量,并單擊“編輯”按鈕,彈出“編輯系統(tǒng)變量”對(duì)

話框,如圖1-5所示。

圖1-3“高級(jí)”選項(xiàng)卡圖1-4“環(huán)境變量”對(duì)話框

②在“變量值”文本框中增加“C:\ProgramFiles\java\jdk1.7.0_09\bin”,單擊“確定”

按鈕,完成對(duì)Path的設(shè)置。

對(duì)Classpath的設(shè)置步驟如下:

①在圖1-4所示的“環(huán)境變量”對(duì)話框中,如果“系統(tǒng)變量”列表框中沒有Classpath

變量,則單擊“新建”按鈕,彈出“新建系統(tǒng)變量”對(duì)話框,如圖1-6所示。

圖1-5“編輯系統(tǒng)變量”對(duì)話框圖1-6“新建系統(tǒng)變量”對(duì)話框

②在“變量名”文本框中輸入Classpath,在“變量值”文本框中輸入“.;C:\Program

Files\Java\jdk1.7.0_09\lib\tools.jar;C:\ProgramFiles\java\jdk1.7.0_09\lib\dt.jar”,單擊“確

定”按鈕,完成對(duì)Classpath的設(shè)置。

設(shè)置JDK后,就可以編譯和運(yùn)行Java程序。

1.4開發(fā)和運(yùn)行Java程序的步驟

開發(fā)Java程序時(shí),首先使用某種具有編輯功能的軟件將源程序(源程序文件的擴(kuò)展名

為.java)輸入并以文件形式保存在計(jì)算機(jī)外存中,再對(duì)源程序進(jìn)行編譯,生成擴(kuò)展名為.class

的類文件,類文件是一種字節(jié)碼文件。最后運(yùn)行字節(jié)碼文件,得到程序的運(yùn)行結(jié)果。

1.4.1選擇編輯工具

如果使用JBuilder、Eclipse或JCreator等集成開發(fā)工具,它們本身集編輯、編譯、

運(yùn)行和調(diào)試功能于一體,使用非常方便。但如果僅有JDK平臺(tái),則必須再選擇一個(gè)文本

編輯器作為編輯、修改Java源程序的工具,如Windows下的寫字板或記事本等。

7

Java語言程序設(shè)計(jì)

【例】Java程序舉例。

在寫字板中輸入以下程序內(nèi)容:

publicclassExample

{publicstaticvoidmain(Stringargs[])

{System.out.println("HelloJava!");

}

}

這是一個(gè)基本的Java程序,只有一個(gè)類和一個(gè)方法。將該程序以文件名Example.java

保存在磁盤的某一目錄,如C:\java。

【程序解析】

①“publicclassExample”表明要建立一個(gè)類,類名為Example。定義類必須使用關(guān)

鍵字class。Java應(yīng)用程序必須以類的形式出現(xiàn),一個(gè)程序中可以定義若干類。public表

明該類是公共類,可以被所有類訪問。雖然一個(gè)程序文件中可以定義多個(gè)類,但只能有

一個(gè)public類。如果一個(gè)文件中包含一個(gè)public類,文件的名稱必須和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論