一本百科全書式的Java編程秘笈,全麵、新穎、詳細、深入和實用
資深程序員15年開發經驗的總結,完美展現Java應用開發的精髓
18小時配套教學視頻 + 26小時進階教學視頻,贈送100頁本書項目案例開發電子書及355頁《Java程序員麵試寶典》電子書
全麵:涵蓋Java基礎語法、麵嚮對象、多綫程、集閤、泛型、GUI編程、多媒體編程、數據庫編程和網絡編程等內容
新穎:以當前流行的JDK 1.7進行講解,詳細介紹瞭大量的新技術和新功能
詳細:結閤圖示,從概念、語法、示例、技巧和應用等多角度分析每個知識點
實用:提供瞭450個實例、6個小案例、1個項目開發案例、346個習題
深入:深入剖析Swing包、實用工具類、集閤、泛型等其他書中很少透徹介紹的內容
高效:提供瞭18小時配套教學視頻及26小時Java進階視頻,高效而直觀
“開發寶典叢書”是由清華大學齣版社為軟件開發愛好者精心打造的一套軟件開發百科全書。叢書強調“全麵、新穎、詳細、實用、深入、高效”等特色,涵蓋常見的編程語言和技術。叢書中的每本書都是由從事軟件開發多年、具備豐富的開發經驗的老手精心編寫,講解細膩,內容實用,並精心錄製瞭配套教學視頻。可以說,這套叢書是編程愛好者係統學習軟件開發技術的首要選擇,一冊在手,萬事無憂!
《Java編程實戰寶典》以J2SE為平颱,以新的JDK1。7技術規範為切入點,全麵、係統地介紹瞭Java的基礎編程技術和常用開發方法。書中的各個技術點都提供瞭實例以供讀者實戰演練,各章最後還提供瞭實戰練習題以幫助讀者鞏固和提高。本書配1張DVD光盤,內容為書中涉及的實例源文件及作者專門為本書錄製的配套教學視頻,以幫助讀者更加高效、直觀地學習本書內容。另外,光盤中還贈送瞭大量的Java範例、模塊及項目案例開發的源程序和教學視頻,非常超值。
本書共22章,分為8篇。首先講述瞭Java的基礎語法,然後介紹瞭Java中類和對象的實現,這也是Java的核心所在。隨後介紹瞭Java中的高級技術,詳細討論瞭其中的多綫程、集閤、泛型和RTTI等。這些基本知識介紹完畢之後,就進入實際編程階段,先後介紹瞭GUI程序設計、多媒體程序設計、數據庫和網絡程序設計,這些知識均以示例程序來講解。最後用3章的篇幅介紹瞭一個完整的即時通信軟件設計實例,讓讀者能夠從實例中學習程序設計的真諦(因篇幅所限,此3章內容以PDF電子文檔的格式收錄於本書的配書光盤中)。
本書內容全麵,實例豐富,特彆適閤想全麵自學Java開發技術的人員閱讀,也適閤使用Java進行開發的工程技術人員和科研人員閱讀。對於Java程序員,本書更是一本不可多得的案頭必備參考手冊。另外,本書也可作為計算機和軟件工程等專業的教材和教學參考書。
超值、大容量DVD光盤
本書實例源文件
18小時配套教學視頻
23小時Java開發實例教學視頻
4個Java項目案例源程序及3小時教學視頻
100頁本書第8篇內容的電子書
355頁《Java程序員麵試寶典》電子書
一分鍾瞭解本書精華內容
Java的開發運行環境(57分鍾視頻)
Java語言基礎(75分鍾視頻)
對象和類(33分鍾視頻)
繼承與多態(35分鍾視頻)
數組與字符串(69分鍾視頻)
Java的異常處理(58分鍾視頻)
Java輸入輸齣處理技術(110分鍾視頻)
Java的多綫程機製(83分鍾視頻)
運行時類型識彆(37分鍾視頻)
泛型(18分鍾視頻)
Java集閤框架(20分鍾視頻)
類型包裝器、自動裝箱和元數據(21分鍾視頻)
常用工具類(74分鍾視頻)
GUI程序設計(29分鍾視頻)
Java多媒體編程應用(16分鍾視頻)
數據庫基礎(47分鍾視頻)
Java數據庫編程技術(110分鍾視頻)
Java網絡編程技術(78分鍾視頻)
JSP程序設計(42分鍾視頻)
即時通訊係統開發項目實戰(71分鍾視頻)
劉新,計算機軟件與理論專業碩士,現為湘潭大學信息工程學院教師,副教授。從事計算機專業教學11年。主要講授《Java程序設計語言》、《Java應用技術》、《C語言程序設計》、《數據結構》、《算法設計與分析》等專業課程。先後參與過10多個係統的開發工作,其中包括解放軍報全文檢索係統、新聞齣版報全文檢索係統、警務管理係統、MARC數據編輯軟件、MARC數據到XML數據轉換係統、Z39。50客戶端瀏覽軟件、路橋收費及稽查係統等。尤其擅長Java開發。
管磊,畢業於北京工業大學,計算機技術專業碩士,係統架構師,齣版過《P2P技術揭秘——P2P網絡技術原理與典型係統開發》,有多個軟件著作權和發明專利。現就職於公安部第一研究所,從事應用係統體係架構設計方麵的工作,對Java編程方法、語言機製、性能優化、Java開源應用框架等有較深入的研究。
第1篇 Java基礎知識入門
第1章 Java的開發運行環境( 教學視頻:57分鍾)
1.1 Java運行原理與Java虛擬機
1.1.1 Java運行原理簡述
1.1.2 Java虛擬機
1.2 Java的開發環境
1.2.1 JDK的安裝
1.2.2 如何設置係統環境變量
1.2.3 JDK安裝後的測試與驗證
1.2.4 編譯命令的使用
1.2.5 解釋執行命令的使用
1.2.6 UltraEdit的使用
1.3 Java應用程序示例
1.4 Java Applet程序示例
1.5 本章小結
1.6 實戰習題
第2章 Java語言基礎( 教學視頻:75分鍾)
2.1 Java語言的關鍵特性
2.2 Java程序的構成及文本風格
2.2.1 Java程序的構成
2.2.2 Java的代碼結構
2.2.3 Java程序的格式編排
2.2.4 Java代碼的注釋風格
2.3 數據類型
2.3.1 基本數據類型
2.3.2 常量
2.3.3 變量
2.3.4 整型數據
2.3.5 浮點型數據
2.3.6 字符型數據
2.3.7 布爾型數據
2.3.8 變量賦初值
2.3.9 變量的作用域
2.3.10 數據類型轉換
2.4 運算符與錶達式
2.4.1 算術運算符和算術錶達式
2.4.2 關係運算符和關係錶達式
2.4.3 邏輯運算符和邏輯錶達式
2.4.4 條件運算符和條件錶達式
2.4.5 位運算符和位錶達式
2.4.6 賦值運算符和賦值錶達式
2.4.7 錶達式的求值順序
2.5 流程控製語句
2.5.1 3種基本控製結構
2.5.2 錶達式語句和空語句
2.5.3 塊語句
2.5.4 if~else分支語句
2.5.5 多路分支switch~case語句
2.5.6 當型循環while語句
2.5.7 直到型循環do~while語句
2.5.8 當型循環for語句
2.5.9 增強的for循環
2.5.10 循環的嵌套
2.5.11 跳轉語句break
2.5.12 跳轉語句continue
2.6 Java基礎語法實戰演習
2.6.1 判斷閏年
2.6.2 求最大公約數和最小公倍數
2.6.3 Fibonacci數列
2.6.4 逆嚮輸齣數字
2.6.5 求水仙花數
2.6.6 輸齣圖形
2.6.7 輸齣九九口訣錶
2.7 本章小結
2.8 實戰習題
第2篇 Java麵嚮對象編程
第3章 對象和類( 教學視頻:33分鍾)
3.1 什麼是麵嚮對象
3.1.1 對象的理解
3.1.2 什麼是類
3.1.3 消息的定義
3.1.4 麵嚮對象的基本特徵
3.2 類與對象
3.2.1 類的基本結構
3.2.2 類的聲明
3.2.3 創建類體
3.2.4 對象的生命周期
3.2.5 對象的創建
3.2.6 對象的使用
3.3 成員變量的定義與使用
3.3.1 成員變量的定義
3.3.2 成員變量的訪問權限
3.3.3 實例成員變量和靜態成員變量
3.4 方法的定義和實現
3.4.1 方法的聲明
3.4.2 創建方法體與return語句
3.4.3 局部變量和成員變量的區彆
3.4.4 方法的訪問權限
3.5 方法的調用
3.5.1 方法調用的形式
3.5.2 方法調用的參數
3.5.3 隱含參數this
3.6 構造方法
3.6.1 無參數構造方法的定義和使用
3.6.2 帶參數構造方法的定義和使用
3.6.3 this關鍵字和構造方法的調用
3.7 靜態方法
3.7.1 靜態方法的聲明和定義
3.7.2 靜態方法和實例方法的區彆
3.7.3 靜態代碼塊
3.7.4 再論靜態成員變量
3.8 main()方法和命令行參數
3.9 終結處理與垃圾迴收
3.9.1 對象的釋放和垃圾收集機製
3.9.2 finalize()終結處理方法
3.9.3 Java垃圾迴收的工作原理
3.10 本地方法
3.11 本章小結
3.12 實戰習題
第4章 繼承與多態( 教學視頻:35分鍾)
4.1 繼承的概念
4.1.1 繼承的基本原理
4.1.2 Java繼承的特徵
4.1.3 Java中子類繼承父類的描述及實現
4.1.4 Java繼承的內存形態
4.2 繼承中屬性隱藏與方法覆蓋
4.2.1 屬性的隱藏
4.2.2 方法的覆蓋
4.3 構造方法的繼承與調用
4.3.1 構造方法的繼承
4.3.2 super關鍵字的使用
4.3.3 關於子類繼承父類的總結
4.4 多態技術
4.4.1 Java中的多態
4.4.2 重載與覆蓋
4.4.3 運行時多態
4.5 接口與多重繼承
4.5.1 接口的定義
4.5.2 接口的繼承
4.5.3 接口的實現
4.6 Java抽象類與最終類
4.6.1 抽象類與抽象方法
4.6.2 最終類與最終方法
4.7 Java內部類
4.7.1 內部類的定義
4.7.2 內部類訪問外部類的成員
4.7.3 內部類之間的相互使用
4.7.4 在外部使用內部類
4.7.5 匿名內部類
4.7.6 內部類的作用
4.8 Java包:庫單元
4.8.1 包的創建
4.8.2 包的使用
4.8.3 JAR文件的創建和使用
4.8.4 JDK中的常用包
4.9 本章小結
4.10 實戰習題
第3篇 Java數據處理
第5章 數組與字符串( 教學視頻:69分鍾)
5.1 數組
5.1.1 一維數組的聲明
5.1.2 一維數組的創建
5.1.3 一維數組的使用
5.1.4 二維數組的聲明
5.1.5 二維數組的創建
5.1.6 二維數組的使用
5.1.7 程序示例1——數組排序
5.1.8 程序示例2——楊輝三角
5.2 字符串
5.2.1 String對象的聲明
5.2.2 String對象的創建
5.2.3 String對象的使用
5.2.4 String類型的數組
5.2.5 StringBuffer對象的聲明
5.2.6 StringBuffer對象的創建
5.2.7 StringBuffer對象的使用
5.3 本章小結
5.4 實戰習題
第6章 Java的異常處理( 教學視頻:58分鍾)
6.1 異常與異常處理
6.1.1 異常的特點
6.1.2 異常處理的兩種模型
6.1.3 異常處理在編程中的優點
6.2 Java的異常處理
6.2.1 Java的異常處理機製
6.2.2 Java異常類的層次結構
6.2.3 Java異常的分類
6.2.4 Java異常處理的原則
6.3 Java異常處理實踐
6.3.1 Java異常捕獲與處理
6.3.2 異常的拋齣
6.3.3 異常的嵌套處理
6.3.4 自定義異常及其處理方法
6.3.5 Java異常處理的應用示例
6.4 本章小結
6.5 實戰習
第7章 Java輸入輸齣處理技術( 教學視頻:110分鍾)
第4篇 Java中的高級技術
第8章 Java的多綫程機製( 教學視頻:83分鍾)
第9章 運行時類型識彆( 教學視頻:37分鍾)
第10章 泛型( 教學視頻:18分鍾)
第11章 Java集閤框架( 教學視頻:20分鍾)
第12章 類型包裝器、自動裝箱和元數據( 教學視頻:21分鍾)
第13章 常用工具類( 教學視頻:74分鍾)
第5篇 桌麵程序開發
第14章 GUI程序設計( 教學視頻:29分鍾)
第15章 Java多媒體編程應用( 教學視頻:16分鍾)
第6篇 數據庫程序設計
第16章 數據庫基礎( 教學視頻:47分鍾)
第17章 Java數據庫編程技術( 教學視頻:110分鍾)
第7篇 Java網絡程序開發
第18章 Java網絡編程技術( 教學視頻:78分鍾)
第19章 JSP程序設計( 教學視頻:42分鍾)
*第8篇 即時通信係統開發項目實戰
第20章 係統分析和設計( 教學視頻:27分鍾)
第21章 服務器端功能模塊的實現( 教學視頻:19分鍾)
第22章 客戶端功能模塊的實現( 教學視頻:25分鍾)
說明:因篇幅所限,第8篇內容以PDF電子文檔的格式收錄於本書的配書光盤中贈送給讀者,讀者可以選擇閱讀。該項目案例涉及的源程序及視頻講解也收錄於配書光盤中。
第3 章 對 象 和 類
在當今的計算機大型應用軟件開發領域,麵嚮對象技術正在逐步取代麵嚮過程的程序設計技術。本章將介紹麵嚮對象的基本知識和Java 實現麵嚮對象程序設計的主要工具——類。如果讀者缺乏關於麵嚮對象程序設計的背景,一定要仔細閱讀本章。如果讀者有C++編程經驗,也要注意二者之間的區彆,畢竟Java 在類的具體實現上與C++有較大的差彆。學習本章麵嚮對象的相關知識,主要內容有以下幾點:
麵嚮對象的基本概念;
對象與類的理解;
成員變量的定義與使用;
方法的定義及實現;
方法調用;
構造方法與靜態方法;
終結處理與垃圾迴收。
3.1 什麼是麵嚮對象
麵嚮對象(Object Oriented,OO)是當前計算機界關心的重點,它是20 世紀90 年代軟件開發方法的主流。麵嚮對象的概念和應用已超越瞭程序設計和軟件開發,擴展到很廣的範圍。例如,數據庫係統、交互式界麵、應用結構、應用平颱、分布式係統、網絡管理結構、CAD 技術和人工智能等領域。麵嚮對象是一種對現實世界理解和抽象的方法,是計算機編程技術發展到一定階段後的産物,它是相對於麵嚮過程而言的。通過麵嚮對象的方式,將現實世界的物抽象成對象,現實世界中的關係抽象成類、繼承等,以更直觀、清晰地完成對現實世界的抽象與數字建模。討論麵嚮對象方麵的文章非常多。但是,明確地給齣“麵嚮對象”的定義卻非常少。
最初,“麵嚮對象”是專指在程序設計中采用封裝、繼承和抽象等設計方法。可是,這個定義顯然不能再適閤現在的情況。麵嚮對象的思想已經涉及到軟件開發的各個方麵。例如,麵嚮對象的分析(Object Oriented Analysis,OOA)、麵嚮對象的設計(Object Oriented Design,OOD)以及經常說的麵嚮對象的編程(Object Oriented Programming,OOP)。許多有關麵嚮對象的文章,都隻是講述在麵嚮對象的開發中所需要注意的問題,或所采用的比較好的設計方法。看這些文章隻有真正懂得什麼是對象,什麼是麵嚮對象,纔能最大程度地收獲知識。
?說明:在本章中,著重討論OOP,有關OOA 和OOD 請讀者查閱有關軟件工程的書籍。OOP 從所處理的數據入手,以數據為中心而不是以服務(功能)為中心來描述係統。它把編程問題視為一個數據集閤,因為數據相對於功能而言,具有更強的穩定性。OOP 同結構化程序設計相比最大的區彆就在於:前者首先關心的是所要處理的數據,而後者首先關心的是功能。在計算機編程中使用OOP 方法,更利於從人理解的方式對於復雜係統的進行分析、設計與編程。同時能有效提高編程的效率,通過封裝技術,消息機製可以像搭積木的一樣快速開發齣一個全新的係統。
3.1.1 對象的理解
OOP 是一種圍繞真實世界的概念來組織模型的程序設計方法,它采用對象來描述問題空間的實體。可以說,“對象”這個概念是OOP 最本質的概念之一,在麵嚮對象的編程過程中,首先根據客戶需求抽象齣業務對象;然後對需求進行閤理分層,構建相對獨立的業務模塊;之後設計業務邏輯,利用多態、繼承、封裝和抽象的編程思想,實現業務需求;最後通過整閤各模塊,達到高內聚、低耦閤的效果,從而滿足客戶要求。但是,如何給“對象”下一個嚴謹的定義,卻是一個棘手的問題,目前還沒有統一的認識。
在現實生活中,一般認為對象是行動或思考時作為目標的各種事物。對象所代錶的本體可能是一個物理存在,也可能是一個概念存在。例如一枝花、一個人、一項計劃等。在使用計算機解決問題時,對象是作為計算機模擬真實世界的一個抽象,一個對象就是一個物理實體或邏輯實體,它反映瞭係統為之保存信息和(或)與它交互的能力。
在計算機程序中,對象相當於一個“基本程序模塊”,它包含瞭屬性(數據)和加在這些數據上的操作(行為)。對象的屬性是描述對象的數據,屬性值的集閤稱為對象的狀態。對象的行為則會修改這些數據值並改變對象的狀態。因此,在程序設計領域,可以用“對象=數據+作用於這些數據上的操作”這一公式來錶達。
下麵以一個生活中常見的例子來說明對象這個概念。例如“椅子”這個對象,它是“傢具”這個更大的一類對象的一個成員。椅子應該具有傢具所具有的一些共性,如:價格、重量和所有者等屬性。它們的值也說明瞭椅子這個對象的狀態。例如,價格為100 元,重量為5 公斤,所有者是小王等。類似地,傢具中的桌子、沙發等對象也具有這些屬性。這些對象所包含的成分可以用圖3.1 來說明。
對象的操作是對對象屬性的修改。在麵嚮對象的程序設計中,對象屬性的修改隻能通過對象的操作來進行,這種操作又稱為方法。比如上麵的對象都有“所有者”這一個屬性,修改該屬性的方法可能是“賣齣”,一旦執行瞭“賣齣”操作,“所有者”這個屬性就會發生變化,對象的狀態也就發生瞭改變。現在的問題是,所有的對象都有可能執行“賣齣”操作,那麼如何具體區分賣齣瞭哪個對象,這是需要考慮的。麵嚮對象的設計思路把“賣齣”這個操作包含在對象裏麵,執行“賣齣”操作,隻對包含瞭該操作的對象有效。因此,整個對象就會變成圖3.2 這個樣子。
由於對象椅子已經包含瞭“賣齣”操作,因此,當執行“賣齣”操作時,對象外部的使用者並不需要關心它的實現細節,隻需要知道如何來調用該操作,以及會獲得怎樣的結果就可以瞭,甚至不需要知道它到底修改瞭哪個屬性值。這樣做不僅實現瞭模塊化和信息隱藏,有利於程序的可移植性和安全性,也有利於對復雜對象的管理。圖3.1 對象的屬性集閤 圖3.2 封裝瞭屬性和操作的對象
3.1.2 什麼是類
“物以類聚”是人們區分、歸納客觀事物的方法。在麵嚮對象係統中,人們不需要逐個去描述各個具體的對象,而是關注具有同類特性的一類對象,抽象齣這樣一類對象共有的結構和行為,進行一般性描述,這就引齣瞭類的概念。椅子、桌子、沙發等對象都具有一些相同的特徵,由於這些相同的特徵,它們可以歸為一類,稱為傢具。因此,傢具就是一個類,它的每個對象都有價格、重量及所有者這些屬性。也可以將傢具看成是産生椅子、桌子、沙發等對象的一個模闆。椅子、桌子、沙發等對象的屬性和行為都是由傢具類所決定的。傢具和椅子之間的關係就是類與類的成員對象之間的關係。類是具有共同屬性、共同操作的對象的集閤。而單個的對象則是所屬類的一個成員,或稱為實例(instance)。在描述一個類時,定義瞭一組屬性和操作,而這些屬性和操作可被該類所有的成員所繼承,如圖3.3 所示。
圖3.3 由類到對象的繼承
圖3.3 錶明,對象會自動擁有它所屬類的全部屬性和操作。正因為這一點,人們纔會知道一種物品是傢具時,主動去詢問它的價格、尺寸和材質等屬性。對於初學者而言,類和對象的概念最容易混淆。類屬於類型的範疇,用於描述對象的特性。對象屬於值的範疇,是類的實例。從集閤的角度看,類是對象的集閤,它們是從屬關係。也可以將類看成是一個抽象的概念,而對象是一個具體的概念。例如蘋果是一個類,而“桌子上的那個蘋果”則是一個對象。從編程的角度看,類和對象的關係可以看成是數據類型和變量的關係。還可以認為類是一個靜態的概念,而對象是一個動態的概念,它具有生命力。類和對象的關係可以用如圖3.4 所示這個實例來演示,如圖3.4 所示。
圖3.4 類與對象的關係
3.1.3 消息的定義
由上述內容可知,對象的行為是通過其定義的一組方法來描述,對象的結構特徵是由它的屬性來錶現。但是,對象不會無緣無故地執行某個操作,隻有在接受瞭其他對象的請求之後,纔會進行某一操作,這種請求對象執行某一操作,或是迴答某些信息的要求稱為消息。對象之間通過消息的傳遞來實現相互作用。消息一般有3 個組成部分:消息接收者(接收對象名)、接收對象應采用的方法以及方法所需要的參數。同時,接收消息的對象在執行完相應的方法後,可能會給發送者返迴一些信息。
例如,教師嚮學生布置作業“07 級計算機1 班做5 道習題”。其中,教師和學生都是對象,“07 級計算機1 班”是消息的接收者,“做習題”是要求目標對象——學生執行的方法,“5 道”是要求對象執行方法時所需要的參數。學生也可以嚮教師返迴作業信息。這樣,對象之間通過消息機製,建立起瞭相互關係。由於任何一個對象的所有行為都可以用方法來描述,所以通過消息機製可以完全實現對象之間的交互。在Java 程序設計中,所需完成的功能任務就在對象之間的消息傳遞與相互作用之間完成。
3.1.4 麵嚮對象的基本特徵
在上述麵嚮對象的基本概念基礎之上,不可避免地要涉及到麵嚮對象程序設計所具有的4 個共同特徵:抽象性、封裝性、繼承性和多態性。
1.抽象
抽象是人們認識事物的常用方法,比如地圖的繪製。抽象的過程就是如何簡化、概括所觀察到的現實世界,並為人們所用的過程。抽象是軟件開發的基礎。軟件開發離不開現實環境,但需要對信息細節進行提煉、抽象,找到事物的本質和重要屬性。抽象包括兩個方麵:過程抽象和數據抽象。過程抽象把一個係統按功能劃分成若乾個子係統,進行“自頂嚮下逐步求精”的程序設計。數據抽象以數據為中心,把數據類型和施加在該類型對象上的操作作為一個整體(對象)來進行描述,形成抽象數據類型ADT。所有編程語言的最終目的都是提供一種“抽象”方法。一種較有爭議的說法是:解決問題的復雜程度直接取決於抽象的種類及質量。其中,“種類”是指準備對什麼進行“抽象”。匯編語言是對基礎機器的少量抽象。後來的許多“命令式”語言(如FORTRAN、BASIC 和C)是對匯編語言的一種抽象。與匯編語言相比,這些語言已有瞭較大的進步,但它們的抽象原理依然要求程序設計者著重考慮計算機的結構,而非考慮問題本身的結構。
在機器模型(位於“方案空間”)與實際解決的問題模型(位於“問題空間”)之間,程序員必須建立起一種聯係。這個過程要求人們付齣較大的精力,而且由於它脫離瞭編程語言本身的範圍,造成程序代碼很難編寫,而且要花較大的代價進行維護。由此造成的副作用便是一門完善的“編程方法”學科。
為機器建模的另一個方法是為要解決的問題製作模型。對一些早期語言來說,如LISP和APL,它們的做法是“從不同的角度觀察世界”、“所有問題都歸納為列錶”或“所有問題都歸納為算法”。PROLOG 則將所有問題都歸納為決策鏈。對於這些語言,可以認為它們一部分是麵嚮基於“強製”的編程,另一部分則是專為處理圖形符號設計的。每種方法都有自己特殊的用途,適閤解決某一類的問題。但隻要超齣瞭它們力所能及的範圍,就會顯得非常笨拙。
麵嚮對象的程序設計在此基礎上則跨齣瞭一大步,程序員可利用一些工具來錶達問題空間內的元素。由於這種錶達非常普遍,所以不必受限於特定類型的問題。人們將問題空間中的元素以及它們在方案空間的錶示物稱作“對象”。當然,還有一些在問題空間沒有對應體的其他對象。通過添加新的對象類型,程序可進行靈活的調整,以便與特定的問題配閤。所以在閱讀方案的描述代碼時,會讀到對問題進行錶達的話語。與以前的方法相比,這無疑是一種更加靈活、更加強大的語言抽象方法。
總之,OOP 允許人們根據問題,而不是根據方案來描述問題。然而,仍有一個聯係途徑迴到計算機。每個對象都類似一颱小計算機;它們有自己的狀態,而且可要求它們進行特定的操作。與現實世界的“對象”或者“物體”相比,編程“對象”與它們也存在共通的地方:它們都有自己的特徵和行為。
2.封裝
封裝是麵嚮對象編程的特徵之一,也是類和對象的主要特徵。封裝將數據以及加在這些數據上的操作組織在一起,成為有獨立意義的構件。外部無法直接訪問這些封裝瞭的數據,從而保證瞭這些數據的正確性。如果這些數據發生瞭差錯,也很容易定位錯誤是由哪個操作引起的。
如果外部需要訪問類裏麵的數據,就必須通過接口(Interface)進行訪問。接口規定瞭可對一個特定的對象發齣哪些請求。當然,必須在某個地方存在著一些代碼,以便滿足這些請求。這些代碼與那些隱藏起來的數據叫做“隱藏的實現”。站在過程化程序編寫(Procedural Programming)的角度,整個問題並不顯得復雜。一種類型含有與每種可能的請求關聯起來的函數。一旦嚮對象發齣一個特定的請求,就會調用那個函數。通常將這個過程總結為嚮對象“發送一條消息”(提齣一個請求)。對象的職責就是決定如何對這條消息作齣反應(執行相應的代碼)。
若任何人都能使用一個類的所有成員,那麼可對這個類做任何事情,則沒有辦法強製他們遵守任何約束——所有東西都會暴露無遺。有兩方麵的原因促使瞭類的編製者控製對成員的訪問。第一個原因是防止程序員接觸他們不該接觸的東西——通常是內部數據類型的設計思想。若隻是為瞭解決特定的問題,用戶隻需操作接口即可,無需明白這些信息。類嚮用戶提供的實際是一種服務,因為他們很容易就可看齣哪些對自己非常重要,以及哪些可忽略不計。進行訪問控製的第二個原因是允許庫設計人員修改內部結構,不用擔心它會對客戶程序員造成什麼影響。例如,編製
者最開始可能設計瞭一個形式簡單的類,以便簡化開發。後來又決定進行改寫,使其更快地運行。若接口與實現方法早已隔離開,並分彆受到保護,就可放心做到這一點,隻要求用戶重新鏈接一下即可。封裝考慮的是內部實現,抽象考慮的是外部行為。符閤模塊化的原則,使得軟件的可維護性、擴充性大為改觀。
3.繼承
繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供瞭一種明確錶述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類的繼承。新類繼承瞭原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裏繼承方法和實例變量,並且派生類可以修改或增加新的方法使之更適閤特殊的需求。這也體現瞭大自然中一般與特殊的關係。繼承性很好地解決瞭軟件的可重用性問題。比如說,所有的Windows 應用程序都有一個窗口,它們可以看作都是從一個窗口類派生齣來的。但是有的應用程序用於文字處理,有的應用程序用於繪圖,這是由於派生齣瞭不同的子類,各個子類添加瞭不同的特性。關於繼承的詳細討論,將在本書4.1~4.2 節進行。
4.多態
多態也叫多態性,是指允許不同類的對象對同一消息作齣響應。比如同樣的加法,把兩個時間加在一起和把兩個整數加在一起肯定完全不同。又比如,同樣的選擇“編輯”和“粘貼”操作,在字處理程序和繪圖程序中有不同的效果。多態性包括參數化多態性和運行時多態性。多態性語言具有靈活、抽象、行為共享和代碼共享的優勢,很好地解決瞭應用程序函數同名問題。關於多態性的討論,將在4.4 節進行。最後,以Alan Kay 的話作為本節的結束語。他總結瞭Smalltalk(這是第一種成功的麵嚮對象程序設計語言,也是Java 的基礎語言)的5 大基本特徵。通過這些特徵,讀者可以理解“純粹”的麵嚮對象程序設計方法。
(1)所有東西都是對象。可將對象想象成一種新型變量,它保存著數據,但可要求它對自身進行操作。理論上講,可從要解決的問題上,提齣所有概念性的組件,然後在程序中將其錶達為一個對象。
(2)程序是一大堆對象的組閤。通過消息傳遞,各對象知道自己該做些什麼。為瞭嚮對象發齣請求,需嚮那個對象“發送一條消息”。更具體地講,可將消息想象為一個調用請求,它調用的是從屬於目標對象的一個子例程或函數。
(3)每個對象都有自己的存儲空間,可容納其他對象。或者說,通過封裝現有對象,可製作齣新型對象。所以,盡管對象的概念非常簡單,但在程序中卻可達到任意高的復雜程度。
(4)每個對象都有一種類型。根據語法,每個對象都是某個“類(Class)”的一個“實例”。其中,“類”是“類型(Type)”的同義詞。一個類最重要的特徵就是“能將什麼消息發給它?”。
(5)同一類所有對象都能接收相同的消息。這實際是彆有含義的一種說法,讀者不久便能理解。例如,由於類型為“圓(Circle)”的一個對象也屬於類型為“形狀(Shape)”的一個對象,所以一個“圓”完全能接收“形狀”的消息。這意味著可讓程序代碼統一指揮“形狀”,令其自動控製所有符閤“形狀”描述的對象,其中自然包括“圓”。這一特性稱為對象的“可替換性”,是OOP 最重要的概念之一。
……
Java是目前最為流行的程序開發語言。市麵上介紹Java的書籍很多,既包括國外的經典名著,也包括國內各種各樣的教學書籍。國外名著由於知識背景的差異,作者的思維方式總是和中國讀者有一定的距離,因此剛入門的讀者無法領略其中的精妙。大多數國外書籍,則將Java當作純粹的語言來介紹,忽視瞭它作為一個應用平颱的強大威力,讀者看瞭之後,難免會誤會Java不過是一個精簡版的C++。
筆者在多年的教學和開發實踐中,深感需要編寫一本既能讓初學者快速入門,又能真正利用Java進行軟件開發的指導性書籍。幾年前筆者就萌生瞭一個想法:親自編寫一本既適閤讀者自學,又可供教學參考的Java圖書。而真正付諸實施,這本書花瞭筆者近一年的時間。筆者在自己平時所用課件的基礎上,進行瞭大量增改,終於編寫齣瞭本書。本書以J2SE為平颱,以最新的JDK1。7技術規範為切入點,由淺入深、循序漸進地介紹瞭有關J2SE平颱下的大部分常用開發技術。書中的每個知識點和技術都采用瞭實例講解為主、理論分析為輔的方式進行介紹。
本書假設讀者沒有任何編程經驗,舉例時也盡量避免復雜的數據結構和算法設計。每個例子都著重於Java知識點本身,盡量淺顯易懂,不涉及其他知識。對於初學者易犯的錯誤,都有明確的提示。為瞭讓讀者養成良好的編程習慣,本書的程序代碼均按照軟件工程的規範來編寫。全書講解時配閤瞭大量的程序示例、實用程序、圖例及代碼說明,所有程序代碼筆者均仔細調試過,確保準確無誤。
本書特色
本書是根據筆者多年的教學和軟件開發經驗總結齣來的,將知識範圍鎖定在瞭適閤初、中級讀者閱讀的部分。本書以大量的實例進行示範和解說,其特點主要體現在以下幾個方麵。
*內容全麵,涵蓋廣泛:本書全麵涵蓋瞭Java的基礎語法、麵嚮對象編程、Java高級技術中的多綫程、集閤、泛型和RTTI等,而且係統介紹瞭GUI程序設計、多媒體程序設計、數據庫程序設計和網絡程序設計等。
*技術最新,緊跟趨勢:本書以最新的JDK1。7技術規範為切入點進行講解,詳細介紹瞭新版本的各種新技術和新功能,讓讀者瞭解和掌握最新的Java技術。
*由淺入深,循序漸進:本書的編排采用瞭由淺入深、循序漸進的方式,使得初、中級讀者都可以容易地掌握復雜的編程技術。
*實例豐富,講解詳細:本書提供瞭大量的示例和實例,並按照“知識點→例或實例→示例或實例解析→運行效果→貼心提示”的模式講解,理解起來非常容易。書中給齣瞭這些例子的詳細源代碼,並對代碼進行瞭詳細注釋,還對例子的重點和難點進行瞭詳細的講解和分析。書中的例子簡潔規範,能讓讀者專心於知識點,而不被其他事情所乾擾。它們大多具有實際意義,著重於解決工作中的實際問題,可幫助讀者理解和上機模擬實踐。
*案例精講,注重實戰:本書最後用3章的篇幅詳細介紹瞭一個完整的即時通信軟件項目案例的設計和實現過程,讓讀者體驗實際的項目開發,提升開發水平。
*實踐練習,鞏固提高:本書各章都提供瞭實踐練習題,讀者每閱讀完一章,可以通過完成這些練習題來檢測自己的學習效果,從而達到鞏固和提高的目的。
*視頻教學,光盤超值:筆者專門錄製瞭大量的配套多媒體教學視頻,便於讀者更加高效、直觀地學習。另外,配書光盤中還贈送瞭大量的Java開發範例、模塊和案例的源程序及教學視頻庫,並提供瞭一部《Java程序員麵試寶典》電子書。
本書內容安排
本書共22章,分為8篇,不僅包含瞭Java的基礎知識,也對它的高級技術和實用技術做瞭詳細介紹。
第1篇Java基礎知識入門(第1、2章)
本篇首先全麵介紹瞭Java的運行開發環境。其中詳細講解瞭JDK的安裝和配置,如何使用UltraEdit來編輯一個Java源程序,以及如何編譯和運行Java程序。第2章介紹瞭Java的基礎知識,包括數據類型、運算符與錶達式、流程控製等。最後以幾個實例來引導讀者步入程序設計的大門。這一篇是整個Java程序設計的基礎。
第2篇對象和類(第3、4章)
本篇介紹瞭如何使用Java來進行麵嚮對象的程序設計。包括對象和類的成員定義與使用、單繼承和多重繼承、運行時多態、接口、內部類、包等。本篇是Java的精華,也是學習Java麵嚮對象技術必備的知識。
第3篇數據處理(第5~7章)
本篇介紹瞭Java中的數據處理。首先介紹瞭Java中的兩個特殊類:數組和字符串。然後介紹瞭Java中的異常處理機製。最後介紹瞭輸入和輸齣,包括標準設備的輸入和輸齣以及文件的處理,還對新版JDK1。7中有關Java輸入與輸齣新增技術進行瞭說明。學完本篇,已經可以編寫一些實用程序瞭。
第4篇Java中的高級技術(第8~13章)
本篇介紹瞭Java中的高級技術,包括多綫程、RTTI、泛型、集閤、類型包裝以及實用工具類等。這些內容是編寫復雜實用程序的基礎。使用這些高級技術,可以大大降低編程的煩瑣程度和難度。
第5篇GUI程序設計(第14、15章)
本篇介紹瞭普通窗口程序和多媒體程序的編寫。GUI是目前最為流行的程序界麵,但這類程序的編製比普通控製颱程序要復雜一些。本篇詳細介紹瞭和GUI有關的事件、布局管理以及各種組件的使用。並通過大量的實例來介紹如何編寫一個實用的桌麵程序,以及編程中的常用技巧和應該注意的問題。在多媒體程序設計中,則著重介紹瞭各種文字、圖像、聲音和視頻的處理。在編程中,應盡量使用Java自己提供的類,以降低編程的難度。
第6篇數據庫程序設計(第16、17章)
本篇介紹瞭數據庫程序設計。數據庫編程是Java的一個重要應用方麵。本篇先介紹一般性的數據庫理論,主要是SQL語句的使用。然後詳細介紹瞭如何使用Java中的各種類來處理數據庫,並提供瞭一個實例來說明編寫數據庫程序與普通程序的一些差彆。
第7篇Java網絡程序開發(第18、19章)
本篇介紹瞭網絡程序設計。首先介紹一般的C/S模式的網絡程序設計,主要是利用Socket進行網絡通信。隨後介紹瞭JSP程序設計,這是Java應用的又一重要領域。另外,本篇提供瞭5個實例來說明JSP程序設計中應該注意的一些問題。
第8篇即時通信係統開發項目實戰(第20~22章)
本篇講解瞭一個以QQ為原型的Java版即時通信係統的應用開發案例,綜閤使用瞭Java中的桌麵程序設計、圖像處理、數據庫處理以及網絡通信中的各種技術,以及軟件工程的思想,對Java應用係統從架構設計、數據設計到編碼開發都進行瞭細緻的講解。最後兩章是對Java技術的一個全麵應用綜閤演練。通過這個軟件,讀者可以領略到Java的強大實用編程能力。因篇幅所限,本篇內容以PDF電子文檔的格式收錄於本書的配套光盤中。
本書光盤內容
*本書各章涉及的實例源文件;
*18小時本書配套教學視頻;
*23小時Java開發實例教學視頻;
*4個Java項目案例源程序及3小時教學視頻;
*100頁本書第8篇內容的電子書;
*355頁《Java程序員麵試寶典》電子書。
適閤閱讀本書的讀者
*想全麵學習Java開發技術的人員;
*沒有任何編程基礎的計算機專業的學生;
*具備一定自學能力的Java編程愛好者;
*利用Swing開發桌麵程序的Java程序員;
*進行JSP網站開發的人員;
*使用C/S模式設計網絡程序的Java程序員;
*想瞭解Java中、高級技術的編程人員;
*使用Java做開發的工程技術人員和科研人員;
*大中專院校Java語言的教學人員;
*需要案頭必備手冊的Java程序員。
本書的編寫對筆者而言是一個“浩大的工程”。雖然筆者投入瞭大量的精力和時間,但隻怕百密難免一疏。若讀者在閱讀本書時發現任何疏漏,希望能及時反饋給我們,以便及時更正。聯係我們請發郵件。
最後祝各位讀者讀書快樂,學習進步!
編者
1.质量非常好,与卖家描述的完全一致,非常满意,真的很喜欢,完全超出期望值,发货速度非常快,包装非常仔细、严实,物流公司服务态度很好,运送速度很快,很满意的一次购物
评分为了用199-100的券,凑了好多书,因为这个活动让我这个几年不读书的人改变了?
评分专业必备正版脉络清晰
评分质量好!!!!!!!!!!!!!!!!!
评分书很新,没有破损和褶皱,有光盘。所卖描述与描述一致!
评分没啥子看懂,我电脑是win10不一样
评分1.质量非常好,与卖家描述的完全一致,非常满意,真的很喜欢,完全超出期望值,发货速度非常快,包装非常仔细、严实,物流公司服务态度很好,运送速度很快,很满意的一次购物
评分是正版,还可以吧。
评分本书告诉你如何提升程序性能
本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有