出版說明在我國高等教育逐步實現大眾化后,越來越多的高等學校將會面向國民經濟發展的第一線,為行業、企業培養各級各類高級應用型專門人才。為此,教育部已經啟動了“高等學校教學質量和教學改革工程”,強調要以信息技術為手段,深化教學改革和人才培養模式改革。如何根據社會的實際需要,根據各行各業的具體人才需求,培養具有特色顯著的人才,是我們共同面臨的重大問題。具體地,培養具有一定專業特色的和特定能力強的計算機專業應用型人才則是計算機教育要解決的問題。
為了適應21世紀人才培養的需要,培養具有特色的計算機人才,急需一批適合各種人才培養特點的計算機專業教材。目前,一些高校在計算機專業教學和教材改革方面已經做了大量工作,許多教師在計算機專業教學和科研方面已經積累了許多寶貴經驗。將他們的教研成果轉化為教材的形式,向全國其他學校推廣,對于深化我國高等學校的教學改革是一件十分有意義的事。
清華大學出版社在經過大量調查研究的基礎上,決定編寫出版一套“普通高校本科計算機專業特色教材精選”。本套教材是針對當前高等教育改革的新形勢,以社會對人才的需求為導向,主要以培養應用型計算機人才為目標,立足課程改革和教材創新,廣泛吸納全國各地的高等院校計算機優秀教師參與編寫,從中精選出版確實反映計算機專業教學方向的特色教材,供普通高等院校計算機專業學生使用。
本套教材具有以下特點:
1. 編寫目的明確
本套教材是深入研究各地各學校辦學特色的基礎上,面向普通高校的計算機專業學生編寫的。學生通過本套教材,主要學習計算機科學與技術專業的基本理論和基本知識,接受利用計算機解決實際問題的基本訓練,培養研究和開發計算機系統,特別是應用系統的基本能力。2. 理論知識與實踐訓練相結合
根據計算學科的三個學科形態及其關系,本套教材力求突出學科理論與實踐緊密結合的特征,結合實例講解理論,使理論來源于實踐,又進一步指導實踐得到自然的體現,使學生通過實踐深化對理論的理解,更重要的是使學生學會理論方法的實際運用。
3. 注意培養學生的動手能力
Java語言程序設計(第3版)出版說明每種教材都增加了能力訓練部分的內容,學生通過學習和練習,能比較熟練地應用計算機知識解決實際問題。既注意培養學生分析問題的能力,也注重培養學生解決問題的能力,以適應新經濟時代對人才的需要,滿足就業要求。
4. 注重教材的立體化配套
大多數教材都將陸續配套教師用課件、習題及其解答提示,學生上機實驗指導等輔助教學資源,有些教材還提供能用于網上下載的文件,以方便教學。
由于各地區各學校的培養目標、教學要求和辦學特色均有所不同,所以對特色教學的理解也不盡一致,我們懇切希望大家在使用教材的過程中,及時地給我們提出批評和改進意見,以便我們做好教材的修訂改版工作,使其日趨完善。
我們相信經過大家的共同努力,這套教材一定能成為特色鮮明、質量上乘的優秀教材,同時,我們也希望通過本套教材的編寫出版,為“高等學校教學質量和教學改革工程”作出貢獻。
清華大學出版社前言誕生于20世紀90年代初的Java語言,伴隨著互聯網日新月異的發展,已廣泛應用于網絡編程、嵌入式和移動系統、游戲以及Web企業平臺等方面。當前,越來越多的人期望學習和掌握Java語言,以便更好地了解和投身于互聯網創新發展的大潮中。在此背景下,我們根據多年的教學經驗和開發實踐,于2006年推出了《Java語言程序設計》第1版,2010年又推出了第2版,廣受讀者歡迎與好評。此后,我們繼續鉆研、不斷拓展,針對讀者需求,引入Java語言的最新發展,對本書進行了進一步的修訂,正式推出了第3版。
本書深入淺出、簡明實用,在突出重點、詳析難點、解答疑點的基礎上,做到概念明晰、注重實用,通過大量例題,幫助讀者理解相關概念和方法,檢驗學習效果,較快地掌握所學知識。
本書全面而又系統地介紹了Java語言的基本語法和重要應用,共分為10章,第1、2章介紹Java語言的特點、Java程序的基本定義和實現方法以及語法基礎;第3章著重討論Java語言面向對象的特征;第4章介紹Java Applet及其應用;第5章詳細描述作為Java語言的重要應用之一的圖形用戶界面的設計方法;第6章對異常處理進行了介紹;第7章詳細解釋線程創建、狀態、同步和特性等基本知識;第8章介紹Java語言的主要特點之一的集合操作;第9章介紹Java語言的輸入輸出操作和文件操作;第10章介紹Java語言重要應用領域網絡編程方面的一些典型應用。
學習計算機語言離不開上機實踐。讀者應在邊學習邊上機的過程中,深入理解、掌握本書的內容。本書尤其注重實際編程能力的培養與提高,備有上機練習題,讀者應按照題目要求,認真上機練習。通過上機調試程序,發現自身概念理解上的模糊和方法運用上的錯誤,搞清概念和糾正錯誤對于深刻理解和熟練掌握Java語言十分重要。
限于編著者的水平,本書難免出現不足之處,懇請讀者提出寶貴意見。
呂鳳翥馬皓
Java語言程序設計(第3版)前言
第1章Java語言概述1
1.1Java語言的歷史1
1.2Java語言的特點2
1.3Java程序及其實現4
1.3.1Java Application程序舉例5
1.3.2Java Application程序的結構特點7
1.4Java Application程序的實現8
1.4.1編輯Java源程序8
1.4.2編譯Java源程序8
1.4.3運行Java的字節碼文件9
1.5Java Application程序的不同界面輸出10
習題13
第2章Java語言語法基礎19
2.1詞法規則19
2.1.1標識符19
2.1.2關鍵字20
2.1.3分隔符20
2.1.4注釋符21
2.2數據類型21
2.2.1基本數據類型21
2.2.2復合數據類型22
2.2.3類型轉換22
2.3常量和變量24
2.3.1常量24
2.3.2變量27
2.4運算符和表達式32
2.4.1運算符32
2.4.2表達式37
2.5語句42
2.5.1表達式語句和空語句42
2.5.2塊語句42
2.5.3選擇語句43
2.5.4循環語句46
2.5.5轉向語句49
2.5.6其他語句53
2.6數組和字符串53
2.6.1數組53
2.6.2字符數組和字符串60
2.6.3Java Application命令行參數62
習題63
Java語言程序設計(第3版)目錄第3章Java語言面向對象的特征77
3.1面向對象的基本概念77
3.1.1對象和類77
3.1.2封裝性79
3.1.3繼承性79
3.1.4多態性80
3.2類的定義80
3.2.1類的定義格式80
3.2.2變量81
3.2.3方法84
3.2.4實例90
3.2.5靜態變量和靜態方法92
3.2.6抽象類和抽象方法95
3.2.7最終類、最終變量和最終方法97
3.3對象99
3.3.1對象的定義99
3.3.2對象的賦值100
3.3.3對象的使用103
3.4類的繼承和多態107
3.4.1父類和子類107
3.4.2成員的繼承和覆蓋113
3.5接口和包119
3.5.1接口119
3.5.2包124
3.6常用的工具類簡介126
3.6.1Java語言的類庫126
3.6.2Java語言基礎類庫128
習題142
第4章Java Applet及其應用155
4.1Applet概述155
4.1.1一個Applet的例子155
4.1.2HTML文件156
4.1.3Applet的特點和工作原理157
4.2Applet與Applet類160
4.2.1Applet與Applet類的關系160
4.2.2Applet類的主要方法161
4.3Applet程序和HTML文件163
4.3.1HTML文件163
4.3.2向Applet傳遞參數164
4.4Applet的應用166
4.4.1繪制圖形166
4.4.2演示圖像181
4.4.3播放聲音184
習題186
第5章圖形用戶界面設計193
5.1圖形用戶界面概述193
5.1.1圖形用戶界面的構成193
5.1.2圖形用戶界面的實現194
5.1.3界面元素的類結構197
5.2事件和事件處理198
5.2.1事件處理方法198
5.2.2事件類和監聽者接口201
5.3基本控制組件的使用208
5.3.1按鈕和標簽209
5.3.2文本框和文本區211
5.3.3單復選框和列表216
5.3.4下拉列表和滾動條221
5.3.5畫布226
5.4布局設計228
5.4.1順序布局229
5.4.2邊界布局231
5.4.3卡片布局232
5.4.4網格布局235
5.4.5復雜的網格布局237
5.5常用容器組件的使用241
5.5.1容器概述241
5.5.2容器Panel242
5.5.3窗口和菜單245
5.5.4對話框257
習題263
第6章異常和異常處理275
6.1異常和異常類275
6.1.1異常275
6.1.2異常類276
6.2異常處理278
6.2.1程序運行時異常279
6.2.2捕獲異常280
6.2.3拋出異常283
6.3創建異常285
6.3.1用戶創建自己的異常285
6.3.2舉例分析287
習題293
第7章線程301
7.1概念301
7.2線程的創建302
7.2.1繼承Thread類302
7.2.2實現Runnable接口304
7.2.3兩種方式的比較306
7.3線程的狀態306
7.3.1概述306
7.3.2啟動307
7.3.3終止307
7.3.4暫停308
7.3.5狀態判斷310
7.4線程的同步311
7.4.1非同步實例311
7.4.2關鍵詞synchronized和鎖313
7.4.3等待wait()和喚醒notify()315
7.4.4完整的同步實例316
7.5線程的其他特性318
7.5.1主線程318
7.5.2守護線程319
7.5.3線程組321
7.5.4線程優先級323
7.5.5死鎖323
7.5.6線程池325
7.5.7不再使用的方法327
習題328
第8章Java語言的集合操作333
8.1概念333
8.2數組(Arrays)類333
8.3基本的集合接口335
8.4集合(Set)336
8.5列表(List)340
8.6映射(Map)342
8.7Collections類346
8.7.1排序347
8.7.2同步350
8.7.3只讀350
8.7.4特殊集合351
8.8枚舉和迭代352
8.9歷史集合類354
8.10使用原則355
8.11Java泛型初探356
習題360
第9章Java輸入/輸出365
9.1流的概念365
9.2輸入/輸出類366
9.2.1基本類366
9.2.2類別和功能367
9.3標準輸入/輸出369
9.4文件讀/寫372
9.4.1字節流方式372
9.4.2字符流方式375
9.4.3文件緩沖類377
9.5流的包裝381
9.5.1概念381
9.5.2連接多個輸入流383
9.5.3基本數據流385
9.5.4管道操作388
9.6文件類391
9.7隨機訪問文件397
習題399
第10章Java網絡編程403
10.1概述403
10.2URL訪問405
10.3InetAddress類408
10.4NetworkInterface類409
10.5Socket應用411
10.6安全套接字應用417
10.7UDP數據報424
10.8組播427
10.9對IPv6的支持430
習題433
參考文獻439