編輯推薦
本書曾榮獲:
2003年《Software Development》雜誌Jolt大奬
2002年《Java Developer’s Journal》讀者選擇圖書奬
2001年《Java World》雜誌編輯推薦圖書奬
2000年《Java World》讀者選擇圖書奬
1999年《Software Development》雜誌産品奬
1998年《Java Developer’s Journal》編輯推薦圖書奬
本書贏得瞭全球程序員的廣泛贊譽,即使是晦澀的概念,在Bruce Eckel的文字親和力和小而直接的編程示例麵前也會化解於無形。從Java的基礎語法到極高級特性,本書都能逐步指導你輕鬆掌握。
內容簡介
本書特色:
·適閤初學者與專業人員的經典的麵嚮對象的敘述方式;為更新的Java SE5/6的相關內容增加瞭新的示例和章節。
·測驗框架顯示程序輸齣。
·設計模式貫穿於眾多示例中:適配器、橋接器、職責鏈、命令、裝飾器、外觀、工廠方法、享元、點名、數據傳輸對象、空對象、代理、單例、狀態、策略、模闆方法以及訪問者。
·為數據傳輸引入瞭XML;為用戶界麵引入瞭SWT和Flash。
·重新撰寫瞭有關並發的章節,使您能牢牢地掌握綫程的相關知識。
·專門為第4版以及Java SE5/6重寫瞭在700多個編譯文件中的500多個程序。
·支持網站包含瞭所有源代碼、帶注解的解決方案指南、網絡日誌以及多媒體學習資料。
·完全覆蓋瞭所有基礎知識,同時也論述瞭高級特性。
·詳細徹底地闡述瞭麵嚮對象原理。
·在綫可獲得Java講座CD,包含Bruce Eckel的全部多媒體講座。
作者簡介
Bruce Eckel是Mind View公司的總裁,該公司嚮客戶提供軟件谘詢和培訓。他是C++標準委員會擁有錶決權的成員之一,擁有應用物理學學士和計算機工程碩士學位。除本書外,他還是《C++編程思想》(該書景印版及翻譯版已由機械工業齣版社引進齣版)的作者,並與人閤著瞭《C++編程思想 第2捲》及其他著作。他已經發錶瞭150多篇論文,還經常參加世界各地的研討會並進行演講。
目錄
讀者評論
前言
簡介
第1章 對象導論
1.1 抽象過程
1.2 每個對象都有一個接口
1.3 每個對象都提供服務
1.4 被隱藏的具體實現
1.5 復用具體實現
1.6 繼承
1.6.1 “是一個”(is-a)與“像是一個”(is-like-a)關係
1.7 伴隨多態的可互換對象
1.8 單根繼承結構
1.9 容器
1.9.1 參數化類型(範型)
1.10 對象的創建和生命期
1.11 異常處理:處理錯誤
1.12 並發編程
1.13 Java與Internet
1.13.1 Web是什麼
1.13.2 客戶端編程
1.13.3 服務器端編程
1.22 總結
第2章 一切都是對象
2.1 用引用操縱對象
2.2 必須由你創建所有對象
2.2.1 存儲到什麼地方
2.2.2 特例:基本類型
2.2.3 Java中的數組
2.3 永遠不需要銷毀對象
2.3.1 作用域
2.3.2 對象的作用域
2.4 創建新的數據類型:類
2.4.1 域和方法
2.4.2 基本成員默認值
2.5 方法、參數和返迴值
2.5.1 參數列錶
2.6 構建一個Java程序
2.6.1 名字可見性
2.6.2 運用其他構件
2.6.3 static 關鍵字
2.7 你的第一個Java程序
編譯和運行
2.8 注釋和嵌入式文檔
2.8.1 注釋文檔
2.8.2 語法
2.8.3 嵌入式HTML
2.8.4 一些標簽示例
2.8.5 文檔示例
2.9 編碼風格
2.10 總結
2.11 練習
第3章 操作符
3.1 更簡單的打印語句
3.2 使用Java操作符
3.3 優先級
3.4 賦值
3.4.1 方法調用中的彆名問題
3.5 算術操作符
3.5.1 一元加、減操作符
3.6 自動遞增和遞減
3.7 關係操作符
3.7.1 測試對象的等價性
3.8 邏輯操作符
3.8.1 短路
3.9 直接常量
3.9.1 指數記數法
3.10 按位操作符
3.11 移位操作符
3.12 三元操作符 if-else
3.13 字符串操作符 + 和 +=
3.14 使用操作符時常犯的錯誤
3.15 類型轉換操作符
3.15.1 截尾和捨入
3.15.2提升
3.16 Java沒有“sizeof”
3.17 操作符小結
3.18 總結
第4章 控製執行流程
4.1 true和false
4.2 if-else
4.3 迭代
4.3.1 do-while
4.3.2 for
4.3.3 逗號操作符
4.4 Foreach語法
4.5 return
4.6 break和 continue
4.7 臭名昭著的“goto”
4.8 switch
4.9 總結
第5章 初始化與清理
5.1 用構造器確保初始化
5.2 方法重載
5.2.1 區分重載方法
5.2.2 涉及基本類型的重載
5.2.3 以返迴值區分重載方法
5.3 缺省構造器
5.4 this關鍵字
5.4.1 在構造器中調用構造器
5.4.2 static的含義
5.5 清理:終結處理和垃圾迴收
5.5.1 finalize()的用途何在
5.5.2 你必須實施清理
5.5.3 終結條件
5.5.4 垃圾迴收器如何工作
5.6 成員初始化
5.6.1 指定初始化
5.7 構造器初始化
5.7.1 初始化順序
5.7.2. 靜態數據的初始化
5.7.3. 顯式的靜態初始化
5.7.4. 非靜態實例初始化
5.8 數組初始化
5.8.1 可變參數列錶
5.9 枚舉類型
5.10 總結
第6章 訪問權限控製
6.1 包:庫單元
6.1.1 代碼組織
6.1.2 創建獨一無二的包名
6.1.3 定製工具庫
6.1.4 用 import改變行為
6.1.5 對使用包的忠告
6.2 Java訪問權限修飾詞
6.2.1 包訪問權限
6.2.2 public:接口訪問權限
6.2.3 private: 你無法訪問
6.2.4 protected:繼承訪問權限
6.3 接口和實現
6.4 類的訪問權限
6.5 總結
第7章 復用類
7.1 組閤語法
7.2 繼承語法
7.2.1 初始化基類
7.3 代理
7.4 結閤使用組閤和繼承
7.4.1 確保正確清理
7.4.2 名稱屏蔽
7.5 在組閤與繼承之間選擇
7.6 protected關鍵字
7.7 嚮上轉型
7.7.1 為什麼稱為“嚮上轉型”?
7.7.2 再論組閤與繼承
7.8 final關鍵字
7.8.1 final 數據
7.8.2 final 方法
7.8.3 final 類
7.8.4 有關final的忠告
7.9 初始化及類的加載
7.9.1 繼承與初始化
7.10 總結
第8章 多態
8.1 再論嚮上轉型
8.1.1 忘記對象類型
8.2 轉機
8.2.1 方法調用綁定
8.2.2 産生正確的行為
8.2.3 可擴展性
8.2.4 缺陷:“覆蓋”私有方法
8.2.5 缺陷:域與靜態方法
8.3 構造器和多態
8.3.1 構造器的調用順序
8.3.2 繼承與清理
8.3.3 構造器內部的多態方法的行為
第9章 接口
9.1 抽象類和抽象方法
9.2 接口
9.3 完全解耦
9.4 Java中的“多重繼承”
9.5 通過繼承來擴展接口
9.5.1 組閤接口時的名字衝突
9.6 適配接口
9.7 接口中的域
9.7.1 初始化接口中的域
9.8 嵌套接口
9.9 接口與工廠
9.10 總結
第10章 內部類
10.1 創建內部類
10.2 鏈接到外部類
10.3 使用.this與.new
10.4 內部類與嚮上轉型
10.5 在方法和作用域內的內部類
10.6 匿名內部類
10.6.1 再訪工廠方法
10.7 嵌套類
10.7.1 接口內部的類
10.7.2 從多層嵌套類中訪問外部類的成員
10.8 為什麼需要內部類
10.8.1 閉包與迴調
10.8.2 內部類與控製框架
10.9 內部類的繼承
10.10 內部類可以被覆蓋嗎
10.11 局部內部類
10.12 內部類標識符
10.13 總結
第11章 持有對象
11.1 泛型和類型安全的容器
11.2 基本概念
11.3 添加一組元素
11.4 容器的打印
11.5 List
11.6 迭代器
11.6.1 ListIterator
11.7 LinkedList
11.8 Stack
11.9 Set
11.10 Map
11.11 Queue
11.11.1 PriorityQueue
11.12 Collection和Iterator
11.13 Foreach與迭代器
11.13.1 適配器方法慣用法
11.14 總結
第12章 通過異常處理錯誤
12.1 概念
12.2 基本異常
12.2.1 異常參數
12.3 捕獲異常
12.3.1 try塊
12.3.2 異常處理程序
12.4 創建自定義異常
12.4.1 異常與記錄日誌
12.5 異常說明
12.6 捕獲所有異常
12.6.1 棧軌跡
12.6.2 重新拋齣異常
12.6.3 異常鏈
12.7 Java標準異常
12.7.1 特例: RuntimeException(運行時異常)
12.8 使用finally進行清理
12.8.1 finally用來做什麼
12.8.2 在return中使用finally
12.8.3 缺憾:異常丟失
12.9 異常的限製
12.10 構造器
12.11 異常匹配
12.12 其他可選方式
12.12.1 曆史
12.12.2 觀點
12.12.3 把異常傳遞給控製颱
12.12.4 把“受檢查異常”轉換為“不受檢查的異常”
12.13 異常使用指南
12.14 總結
第13章 字符串
13.1 不可變String
13.2 重載"+"與StringBuilder
13.3 無意識的遞歸
13.4 String上的操作
13.5 格式化輸齣
13.5.1 printf()
13.5.2 System.out.format()
13.5.3 Formatter類
13.5.4 格式化說明符
13.5.5 Formatter轉換
13.5.6 String.format()
13.6 正則錶達式
13.6.1 基礎
13.6.2 創建正則錶達式
13.6.3 限定符
13.6.4 Pattern和Matcher
13.6.5 split()
13.6.6 替換操作
13.6.7 reset()
13.6.8 正則錶達式與Java I/O
13.7 掃描輸入
13.7.1 Scanner定界符
13.7.2 用正則錶達式掃描
13.8 StringTokenizer
13.9 總結
第14章 類型信息
14.1 為什麼需要RTTI
14.2 Class對象
14.2.1 類字麵常量
14.2.2 泛化的Class引用
14.2.3 新的轉型語法
14.3類型轉換前先做檢查
14.3.1 使用類字麵常量
14.3.2 動態instanceof
14.3.3 遞歸計數
14.4 注冊工廠
14.5 instanceof 與 Class的等價性
14.6 反射:運行時類信息
14.6.1 類方法抽取器
14.7 動態代理
14.8 空對象
14.8.1 模擬對象與樁
14.9 接口與類型信息
14.10 總結
第15章 泛型
15.1 與C++的比較
15.2 簡單泛型
15.2.1 一個元組類庫
15.2.2 一個棧類
15.2.3 RandomList
15.3 泛型接口
15.4 泛型方法
15.4.1 利用類型參數推斷
15.4.2 可變參數與泛型方法
15.4.3 用於Generator的泛型方法
15.4.4 一個通用的Generator
15.4.5 簡化元組的使用
15.4.6 一個Set實用工具
15.5 匿名內部類
15.6 構建復雜模型
15.7 擦除的神秘之處
15.7.1 C++的方式
15.7.2 遷移的可兼容性
15.7.3 擦除的問題
15.7.4 邊界處的動作
15.8 擦除的補償
15.8.1 創建類型實例
15.8.2 泛型數組
15.9 邊界
15.10 通配符
15.10.1 編譯器有多聰明?
15.10.2 抗變
15.10.3 無界通配符
15.10.4 捕獲轉換
15.11 問題
15.11.1 任何基本類型都不能作為類型參數
15.11.2 實現參數化接口
15.11.3 轉型和警告
15.11.4 重載
15.11.5 基類劫持瞭接口
15.12 自限定的類型
15.12.1 離奇的循環泛型
15.12.2 自限定
15.12.3 參數協變
15.13 動態類型安全
15.14 異常
15.15 混用
15.15.1 C++中的混用
15.15.2 與接口混用
15.15.3 使用裝飾器模式
15.15.4 與動態代理混用
15.16 潛在類型機製
15.17 缺乏潛在類型機製的補償
15.17.1 反射
15.17.2 將一個方法應用於序列
15.17.3 當你並未碰巧擁有正確的接口時
15.17.4 用適配器仿真潛在類型機製
15.18 將函數對象用作策略
15.19 總結:轉型真的如此之糟嗎?
15.19.1 進階讀物
第16章 數組
16.1 數組為什麼特殊
16.2 數組是第一級對象
16.3 返迴一個數組
16.4 多維數組
11.5 數組與泛型
16.6 創建測試數據
16.6.1 Arrays.fill()
16.6.2 數據生成器(Generator)
16.6.3 從Generator中創建數組
16.7 Arrays實用功能
16.7.1 復製數組
16.7.2 數組的比較
16.7.3 數組元素的比較
16.7.4 數組排序
16.7.5 在已排序的數組中查找
16.8 總結
第17章 容器深入研究
17.1 完整的容器分類法
17.2 填充容器
17.2.1 一種Generator解決方案
17.2.2 Map生成器
17.2.3 使用Abstract類
17.3 Collection的功能方法
17.4 可選操作
17.4.1 未獲支持的操作
17.5 List的功能方法
17.6 Set和存儲順序
17.6.1 SortedSet
17.7 隊列
17.7.1 優先級隊列
17.7.2 雙嚮隊列
17.8 理解Map
17.8.1 性能
17.8.2 SortedMap
17.8.3 LinkedHashMap
17.9 散列與散列碼
17.9.1 理解hashCode()
17.9.2 為速度而散列
17.9.3 覆蓋hashCode()
17.10 選擇接口的不同實現
17.10.1 性能測試框架
17.10.2 對List的選擇
17.10.3 微基準測試的危險
17.10.4 對Set的選擇
17.10.5 對Map的選擇
17.11 實用方法
17.11.1 List的排序和查詢
17.11.2 設定Collection或Map為不可修改
17.11.3 Collection或Map的同步控製
17.12 持有引用
17.12.1 WeakHashMap
17.13 Java 1.0/1.1 的容器
17.13.1 Vector 和 Enumeration
17.13.2 Hashtable
17.13.3 Stack
17.13.4 BitSet
17.14 總結
第18章 Java I/O係統
18.1 File類
18.1.1目錄列錶器
18.1.2 目錄實用工具
18.1.3 目錄的檢查及創建
18.2 輸入和輸齣
18.2.1 InputStream類型
18.2.2 OutputStream類型
18.3 添加屬性和有用的接口
18.3.1 通過FilterInputStream從InputStream讀取
18.3.2 通過FilterOutPutStream嚮OutputStream寫入
18.4 Reader和Writer
18.4.1 數據的來源和去處
18.4.2 更改流的行為
18.4.3 未發生變化的類
18.5 自我獨立的類:RandomAccessFile
18.6 I/O流的典型使用方式
18.6.1 緩衝的輸入文件
18.6.2 從內存中輸入
18.6.3 格式化的內存輸入
18.6.4 基本文件輸齣
18.6.5 存儲和恢復數據
18.6.6 讀取和寫入隨機訪問文件
18.6.7 管道流
18.7 文件讀寫的實用工具
18.7.1 讀取二進製文件
18.8 標準I/O
18.8.1 從標準輸入中讀取
18.8.2 將System.out轉換成PrintWriter
18.8.3 標準I/O重定嚮
18.9 進程控製
18.10 新I/O
1
Java編程思想(英文版)(第4版) 下載 mobi epub pdf txt 電子書 格式