《Java程序設計案例教程》根據作者多年的教學經驗和軟件開發經驗總結而來,以大量的實例進行示范和解說,通俗易懂而又有一定的深度。
《Java程序設計案例教程》共分為12章,首先講述了Java的基本知識,包括JDK的使用、數據類型、流程控制等基礎語法知識。隨后介紹了面向對象的編程知識,包括封裝和繼承、抽象類、接口、內部類、重載、覆蓋等,同時還介紹了Java提供的一些實用工具類,如數組、字符串等。然后介紹了Java中的一些高級技術,包括異常處理、集合、泛型等。后介紹了到實際工程開發所需要的一些知識,主要是文件讀寫、多線程設計和網絡程序設計。
《Java程序設計案例教程》既可作為高等學校計算機及相關專業的Java程序設計和面向對象課程的入門教材,亦可作為使用Java語言進行工程開發的技術人員的參考用書。
《Java程序設計案例教程》配有電子教案,需要的教師可登錄www.cmpedu.com免費注冊,審核通過后下載,或聯系編輯索取(QQ:2966938356,電話:010-88379739)。
Java是目前流行的程序開發語言,作為一種完全面向對象的程序設計語言,它具有明顯的優點:設計簡潔而優美,使用方便而高效,既像Basic那樣易于入門,又像C/C++那樣具有強大的實際應用能力。而且與其他純粹的語言不同,Java其實是一個完整的技術平臺,這也就決定了學習Java和其他語言的一些區別。
《Java程序設計案例教程》深入淺出、由易到難地介紹了有關Java的所有語言基礎知識,每個知識點都采用示例講解為主、理論分析為輔的方式進行介紹。對于初學者容易犯的錯誤,都有詳細的說明和提示。本書的后半部分則著重介紹工程開發有關的知識,包括文件讀寫、編碼轉換、異常處理、多線程編寫、網絡程序編寫等,這些內容是作者多年從事工程開發所積累的經驗和技巧,希望從事工程開發的讀者仔細閱讀這一部分。
《Java程序設計案例教程》每個例子都著重于Java知識點本身,盡量淺顯易懂,不涉及其他專門知識。為了讓讀者養成良好的編程習慣,本書的程序代碼均盡量按照軟件工程中的規范來編寫。全書配合了大量的示例程序、圖例及代碼說明,所有示例程序作者均仔細調試過。
《Java程序設計案例教程》共分12章(帶星號*的章節為選講章節,其他章節為必修章節),各章內容具體如下。
第1和第2章是Java基礎知識,介紹了Java的開發運行環境、數據類型、流程控制等。最后以幾個實例引導讀者步入程序設計的大門。這兩章是整個Java程序設計的基礎。
第3~6章介紹了如何使用Java面向對象的特性進行程序設計。主要介紹了對象和類的定義與使用;數組和字符串;常用的工具類;面向對象的高級特性:多態和繼承;一些面向對象的擴展功能:抽象類、內部類和包的使用。
第7~9章介紹了Java編寫實用程序時必不可少的一些功能,包括異常處理機制、輸入和輸出、文件讀寫、多線程的實現。
第10和第11章介紹了Java中的一些高級技術,包括泛型和集合。這些內容是編寫復雜實用程序的基礎,利用它們,可以大大降低編程的繁瑣程度和難度。
第12章詳細介紹了C/S模式的網絡程序設計,主要是利用Socket進行網絡通信。
《Java程序設計案例教程》由劉新主編,嚴思靜、曹明剛參編。其中,嚴思靜編寫了第1章和第2章,劉新編寫了第3章和第5~12章,曹明剛編寫了第4章。張輝、李亭葳參與了本書的校對工作,在此一并表示感謝。全書由劉新統稿。
由于篇幅所限,本書未提供習題。作為補充,本書配有作業系統,需要的教師可發送郵件,獲取免費使用該系統布置的程序設計作業的授權。本書所有的示例程序亦在此網站下載。
由于時間倉促,書中難免有疏漏和不足之處,歡迎讀者批評指正。
前言
第1章開發運行環境
1.1Java的運行環境與虛擬機
1.2Java的開發環境
1.2.1JDK的安裝
1.2.2設置系統環境變量
1.2.3編譯命令的使用
1.2.4解釋執行命令的使用
1.2.5一個簡單的集成開發工具
1.3案例:一個簡單的Java應用程序
第2章語言基礎
2.1Java語言概述
2.1.1Java語言特點
2.1.2Java程序的構成
2.1.3程序文本風格
2.2數據及類型轉換
2.2.1基本數據類型
2.2.2常量
2.2.3變量
2.2.4數據類型轉換
2.3運算符與表達式
2.3.1算術運算符和算術表達式
2.3.2關系運算符和關系表達式
2.3.3邏輯運算符和邏輯表達式
2.3.4條件運算符和條件表達式
2.3.5位運算符和位運算表達式
2.3.6賦值運算符和賦值表達式
2.3.7表達式的求值順序
2.4流程控制語句
2.4.1順序語句
2.4.2分支語句
2.4.3循環語句
2.5控制臺輸入和輸出
2.5.1控制臺輸入類Scanner
2.5.2格式化輸出printf
2.6應用實例
2.6.1案例1:求最大公約數和最小公倍數
2.6.2案例2:Fibonacci數列
2.6.3案例3:拆分數字
2.6.4案例4:輸出九九乘法表
第3章面向對象基礎
3.1面向對象的基本概念
3.1.1對象
3.1.2類
3.1.3消息
3.1.4面向對象的4個基本特征
3.2類與對象
3.2.1類的聲明和定義
3.2.2對象的使用
3.3成員變量
3.3.1成員變量的定義
3.3.2成員變量的訪問權限
3.3.3實例成員變量和靜態成員變量
3.4成員方法
3.4.1方法的聲明和定義
3.4.2方法的調用
3.4.3隱含參數this
3.5構造方法
3.5.1無參數構造方法的定義和使用
3.5.2帶參數構造方法的定義和使用
3.5.3this關鍵字和構造方法的調用
3.6靜態方法
3.6.1靜態方法的聲明和定義
3.6.2靜態方法和實例方法的區別
3.6.3靜態代碼塊
3.6.4再論靜態成員變量
3.7main()方法和命令行參數
3.8案例: 學生類示例
第4章常用工具類
4.1數組
4.1.1一維數組
4.1.2二維數組
4.1.3for-each循環
4.1.4案例1:數組排序
4.1.5案例2:楊輝三角
4.2字符串
4.2.1String對象
4.2.2StringBuffer對象
4.2.3案例3:字符串排序
4.3Runtime類
4.3.1內存管理
4.3.2執行其他程序
4.4System類
4.4.1利用currentTimeMillis()記錄程序執行的時間
4.4.2利用exit()退出虛擬機
4.4.3獲取環境屬性
4.5Math類
4.5.1利用隨機數求π值
4.5.2利用三角函數求π值
4.5.3指數和對數函數
4.5.4取整函數
4.6Random類的使用
4.7日歷類
4.7.1Date類的使用
4.7.2使用SimpleDateFormat格式化輸出時間
4.7.3Calendar類的特色
4.7.4案例4:利用GregorianCalendar輸出日歷
4.8Formatter類
4.8.1Formatter類的簡單使用
4.8.2時間格式轉換符詳解
4.8.3格式說明符語法圖
4.9類型包裝器
第5章繼承和多態
5.1繼承的基本原理
5.2子類對父類的繼承
5.3繼承機制
5.3.1屬性的隱藏
5.3.2方法的覆蓋
5.3.3構造方法沒有繼承機制
5.3.4父類變量引用子類對象
5.3.5繼承的內部處理
5.4super關鍵字
5.4.1使用super引用父類的成員
5.4.2使用super調用父類的構造方法
5.5接口與多重繼承
5.5.1接口的定義
5.5.2接口的繼承
5.5.3接口的實現
5.6重載
5.6.1普通方法的重載
5.6.2構造方法的重載
5.6.3重載的解析
5.6.4重載與覆蓋的區別
5.7運行時多態
5.7.1實例方法的運行時多態
5.7.2成員變量運行時的表現
5.7.3靜態方法運行時的表現
5.8案例:圖形類示例
第6章特殊類與包
6.1抽象類與抽象方法
6.1.1抽象方法的聲明
6.1.2抽象類的定義
6.1.3抽象方法與回調函數
6.2最終類與最終方法
6.3內部類
6.3.1內部類的定義
6.3.2內部類訪問外部類的成員
6.3.3內部類之間的相互使用
6.3.4在外部使用內部類
6.3.5匿名內部類
6.3.6內部類的作用
6.4包
6.4.1包的創建
6.4.2包的使用
6.4.3JAR文件的創建和使用
6.4.4JDK中的常用包
第7章異常處理
7.1異常處理機制簡介
7.1.1異常處理的作用
7.1.2Java的異常處理機制
7.1.3異常類的層次結構
7.2異常處理類型
7.2.1運行時異常
7.2.2檢查型異常
7.2.3自定義異常
7.3異常處理機制
7.3.1捕獲和處理異常
7.3.2拋出異常
7.3.3try-catch-finally語句的嵌套
7.3.4try-with-resource語句
7.3.5用戶自定義異常
7.4案例:使用異常機制來實現鍵盤輸入
第8章輸入和輸出
8.1文件和輸入/輸出流
8.2字節流
8.2.1InputStream中的方法
8.2.2OutputStream中的方法
8.2.3文件輸入流FileInputStream
8.2.4文件輸出流FileOutputStream
8.2.5案例1:保存用戶輸入的數據到文件
8.2.6案例2:顯示文件內容
8.2.7案例3:文件的復制
8.3字符流
8.3.1InputStreamReader類中的方法
8.3.2OutputStreamWriter類中的方法
8.3.3案例4:保存鍵盤輸入到文件
8.3.4案例5:文件編碼轉換
8.4文件屬性處理
8.4.1File類中的方法
8.4.2案例6:文件列表
8.5隨機訪問文件
8.5.1RandomAccessFile類中的方法
8.5.2案例7:文件加密
第9章多線程
9.1線程的概念
9.1.1多線程的特點
9.1.2線程的狀態
9.2Thread類
9.2.1Thread類的構造方法
9.2.2Thread類的常用方法
9.3多線程程序的編寫
9.3.1利用Thread的子類創建線程
9.3.2實現Runnable接口創建線程
9.3.3使用isAlive()和join()等待子線程結束
9.3.4設置線程優先級
9.4線程的通信與協調
9.4.1線程的互斥
9.4.2線程的同步
9.4.3暫停、恢復和停止線程
9.4.4案例:生產者-消費者問題
*第10章泛型
10.1泛型概述
10.1.1案例1:一個關于泛型的簡單例子
10.1.2案例2:帶兩個類型參數的泛型類
10.2泛型的基礎知識
10.2.1有界類型
10.2.2通配符參數
10.2.3泛型方法
10.2.4泛型接口
10.3泛型類的繼承
10.3.1以泛型類為父類
10.3.2以非泛型類為父類
10.3.3運行時類型識別
10.3.4強制類型轉換
10.3.5繼承規則
10.4泛型的本質
10.4.1擦拭
10.4.2擦拭帶來的錯誤
10.5泛型的局限
10.5.1不能使用基本類型
10.5.2不能使用泛型類異常
10.5.3不能使用泛型數組
10.5.4不能實例化參數類型對象
*第11章集合
11.1集合接口與抽象類
11.1.1Collection接口
11.1.2Iterator接口
11.1.3AbstractCollection抽象類
11.1.4幾個常用術語
11.2集合類的使用
11.2.1順序表(ArrayList)的使用
11.2.2鏈表(LinkedList)的使用
11.2.3優先隊列(PriorityQueue)的使用
11.2.4哈希集合(HashSet)的使用
11.2.5哈希映射類(HashMap)的使用
11.2.6有序樹(TreeSet)的使用
11.2.7有序樹映射類(TreeMap)的使用
11.3常用算法
11.3.1Collections中的簡單算法
11.3.2排序
11.3.3二分查找
11.4遺留的類和接口
11.4.1Enumeration接口簡介
11.4.2向量類(Vector)簡介
11.4.3棧(Stack)使用示例
11.4.4字典(Dictionary)簡介
11.4.5哈希表(Hashtable)簡介
第12章網絡程序設計
12.1與網絡相關的常用術語
12.2InetAddress類使用示例
12.3URL類和URLConnection類的使用
12.3.1案例1:用URL類實現一個簡單的瀏覽器
12.3.2案例2:用URLConnection類實現文件下載
12.4Socket的使用
12.4.1客戶端創建Socket對象
12.4.2服務器端創建ServerSocket對象
12.4.3案例3:一對一的通信
12.4.4案例4:一對多的通信
12.4.5案例5:簡單的聊天程序
12.5UDP數據報通信
12.5.1DatagramSocket的使用方法
12.5.2DatagramPacket的使用方法
12.5.3案例6:用UDP實現的聊天程序