譯者序
前言
第1章 面向對象程序設計
1.1 面向對象程序設計和過程型程序設計
1.1.1 自頂向下設計和過程型程序設計
1.1.2 自頂向下設計的問題
1.1.3 類和對象
1.1.4 域和方法
1.1.5 實例與類成員
1.1.6 類的設計
1.1.7 類與對象的關系
1.2 類和抽象數據類型
1.2.1 信息隱藏
1.2.2 封裝
1.2.3 抽象數據類型
1.3 客戶/服務器模型和消息傳遞
1.3.1 客戶/服務器模型
1.3.2 消息傳遞和方法調用
1.4 繼承和多態(tài)
1.4.1 繼承
1.4.2 多態(tài)
1.4.3 多態(tài)和遞歸
1.5 接口和組件
1.6 面向對象的建模和統(tǒng)一建模語言
1.6.1 示例模型
1.6.2 從統(tǒng)一建模語言模型到程序代碼
第2章 入門程序
2.1 第一個程序
2.2 基本的編程結構
2.2.1 求最小整數和最大整數
2.2.2 import語句的便利之處
2.2.3 產生隨機整數
2.2.4 while循環(huán)
2.2.5 if語句
2.2.6 編譯和運行BigAndSmall程序
2.2.7 從一個磁盤文件讀取輸入
2.2.8 填充數組并對其排序
2.2.9 確保一個程序被正確地調用
2.2.10 構造、填充并排序一個數組
2.2.11 填充、打印并排序一個數組
2.2.12 把輸出寫入一個磁盤文件
2.2.13 為一個游戲確定最佳策略
2.2.14 for循環(huán)
2.2.15 絕對值和余數
2.3 字符串
2.3.1 toString方法
2.3.2 一個String類的測試客戶程序
2.3.3 字符串的轉換方法
2.3.4 包裝類和類型轉換
2.3.5 StringBuffer類
2.4 程序員定義的類
2.5 輸入和輸出
2.5.1 輸入/輸出流
2.5.2 IOException
2.5.3 二進制輸入:統(tǒng)計一個文件的字節(jié)數
2.5.4 辨別字母和數字
2.5.5 把標準輸入回送到標準輸出
2.6 實用程序類
2.6.1 StringTokenizer類
2.6.2 Vector類
2.6.3 Hashtable類
2.7 Java補充材料
2.8 通常錯誤和安全實踐
2.9 編程練習
第3章 程序和包
3.1 程序類型
3.1.1 Java虛擬機
3.1.2 應用程序
3.1.3 applet
3.1.4 servlet
3.1.5 bean
3.1.6 程序類型小結
3.2 回顧源文件和類文件
3.3 包
3.3.1 import語句
3.3.2 import語句的使用
3.3.3 包與命名沖突
3.3.4 默認包和命名的包
3.3.5 package語句
3.3.6 環(huán)境變量CLASSPATH
3.3.7 子目錄作為子包
3.4 應用舉例:產生非負整數
3.4.1 問題
3.4.2 輸出
3.4.3 解決方法
3.4.4 Java實現(xiàn)
3.4.5 討論
3.4.6 回顧構造函數和方法
3.4.7 編譯并運行例子程序
3.5 通常錯誤和安全實踐
3.6 編程練習
第4章 語言基礎
4.1 標識符、變量和值
4.1.1 變量和值
4.1.2 域和默認值
4.1.3 對象引用的默認值null
4.1.4 局部變量
4.1.5 final變量
4.2 構造函數和方法
4.2.1 構造函數和方法重載
4.2.2 方法的語法
4.2.3 方法之間的區(qū)別
4.3 基本數據類型和運算符
4.3.1 整數類型
4.3.2 浮點類型
4.3.3 強制類型轉換操作
4.3.4 算術運算符
4.3.5 移位和位運算符
4.3.6 賦值、增量和減量運算符
4.3.7 浮點數的算術運算符
4.3.8 char類型
4.3.9 char類型和整數類型混合使用的問題
4.3.10 對char類型的算術運算
4.3.11 字符串文字
4.3.12 boolean類型
4.3.13 關系運算符
4.3.14 關于等于運算符= =的特別注釋
4.3.15 等于運算符和對象引用
4.3.16 邏輯運算符
4.3.17 運算符instanceof
4.4 數組
4.4.1 邊界檢查
4.4.2 數組的數組
4.4.3 數組作為返回類型
4.5 控制結構
4.5.1 程序塊
4.5.2 同一名字的域、參數和局部變量
4.5.3 嵌套程序塊
4.5.4 if語句
4.5.5 switch語句
4.5.6 while循環(huán)和do while循環(huán)
4.5.7 for循環(huán)
4.6 應用舉例:產生非重復的整數
4.6.1 問題
4.6.2 輸出
4.6.3 解決方法
4.6.4 Java實現(xiàn)
4.6.5 討論
4.6.6 Set接口和HashSet實現(xiàn)
4.7 異常
4.7.1 finally語句
4.7.2 在程序中故意拋出一個異常
4.7.3 throws語句
4.7.4 異常和調試
4.8 Java補充材料
4.8.1 整數的二進制補碼表示
4.8.2 垃圾回收
4.8.3 按位/邏輯運算符
4.8.4 條件運算符
4.9 通常錯誤和安全實踐
4.10 編程練習
第5章 類
5.1 類和類成員的作用域
5.1.1 類作用域
5.1.2 成員作用域
5.1.3 類和成員作用域小結
5.2 構造函數、方法和域
5.2.1 構造函數
5.2.2 無參數的構造函數
5.2.3 通過構造函數限制對象的構造
5.2.4 構造函數和非引用對象
5.2.5 方法
5.2.6 屬性和get/set方法
5.2.7 方法和各種不同的功能
5.2.8 從構造函數中調用方法
5.2.9 從帶返回類型的方法中返回值
5.2.10 通過構造方法構造對象
5.2.11 域
5.2.12 實例域和對象的狀態(tài)
5.2.13 域的初始化
5.2.14 static方法和域
5.2.15 訪問static成員的一種工作方法
5.2.16 static成員的使用
5.2.17 遭反對的特性
5.3 學習類庫
5.4 應用舉例:基本的輸入/輸出類
5.4.1 問題
5.4.2 輸入/輸出
5.4.3 解決方法
5.4.4 Java實現(xiàn)
5.4.5 討論
5.5 應用舉例:一個用于文件復制的實用工具類
5.5.1 問題
5.5.2 輸出舉例
5.5.3 解決方法
5.5.4 Java實現(xiàn)
5.5.5 討論
5.6 Java補充材料
5.7 通常錯誤和安全實踐
5.8 編程練習
第6章 繼承、接口和抽象類
6.1 繼承的基本概念
6.1.1 類Object
6.1.2 一些重要的Object方法
6.1.3 作用域和繼承
6.1.4 作用域和繼承的相互作用
6.1.5 改變一個繼承成員的作用域
6.1.6 在繼承下的構造函數
6.1.7 名字隱藏
6.1.8 用修飾符final禁用繼承
6.1.9 強制類型轉換和類型安全
6.1.10 向下強制類型轉換的危險
6.2 多態(tài)
6.2.1 覆蓋toString方法
6.2.2 覆蓋和名字隱藏
6.2.3 方法覆蓋調用超類方法
6.2.4 用修飾符final禁用覆蓋
6.2.5 覆蓋與重載
6.3 應用舉例:多態(tài)的輸入和輸出
6.3.1 問題
6.3.2 輸入/輸出舉例
6.3.3 解決方法
6.3.4 Java實現(xiàn)
6.3.5 討論
6.4 接口
6.4.1 接口和繼承
6.4.2 接口作為引用數據類型
6.4.3 嵌套的接口
6.4.4 應用程序接口
6.5 抽象類
6.5.1 創(chuàng)建一個抽象類的三種方法
6.5.2 具體類、抽象類和接口的小結
6.6 Java補充材料
6.7 通常錯誤和安全實踐
6.8 編程練習
第7章 圖形與事件處理
7.1 AWT和Swing組件集概述
7.1.1 模型視圖控制器結構
7.1.2 AWT和Swing組件集的共同特性
7.2 事件驅動的程序設計
7.2.1 事件委托模型
7.2.2 Action接口
7.3 組件和容器
7.3.1 JFrame窗口
7.3.2 通過關閉頂層窗口結束應用程序
7.3.3 Action接口和AbstractAction類
7.3.4 菜單、彈出式菜單和子菜單
7.3.5 鍵盤快捷鍵
7.3.6 彈出式菜單
7.3.7 工具條
7.3.8 對話框窗口
7.4 應用舉例:輔助目錄
7.4.1 問題
7.4.2 輸出舉例
7.4.3 解決方法
7.4.4 Java實現(xiàn)
7.4.5 討論 277
7.4.6 創(chuàng)建樹結構
7.4.7 事件處理
7.5 模型視圖控制器結構
7.5.1 一個組件視圖和控制器的集成
7.5.2 組件的外觀和效果
7.5.3 畫圖和重畫
7.5.4 合法和無效
7.6 應用舉例:一個圖形表格編輯器
7.6.1 問題
7.6.2 輸入舉例
7.6.3 解決方法
7.6.4 Java實現(xiàn)
7.6.5 討論
7.6.6 編輯雇員記錄
7.7 通常錯誤和安全實踐
7.8 編程練習
第8章 三種接口:可復制的、可系列化的和可運行的接口
8.1 復制對象
8.1.1 clone方法的默認實現(xiàn)
8.1.2 默認clone方法的問題
8.1.3 復制數組
8.1.4 禁用復制
8.2 系列化
8.2.1 系列化的基本概念
8.2.2 系列化的規(guī)則
8.2.3 系列化與對象圖形
8.2.4 帶有可系列化子類的不可系列化超類
8.2.5 對象的輸入流和輸出流
8.2.6 系列化、數組和基本類型
8.2.7 基本類型與對象流
8.2.8 系列化和String
8.2.9 系列化和static域與transient域
8.2.10 定制系列化
8.2.11 關于系列化的特別注釋
8.2.12 系列版本號
8.2.13 Externalizable接口
8.2.14 禁用系列化
8.3 應用舉例:一個可系列化的時間片
8.3.1 問題
8.3.2 輸出舉例
8.3.3 解決方法
8.3.4 Java實現(xiàn)
8.3.5 討論
8.4 多線程程序
8.4.1 從單線程執(zhí)行到多線程執(zhí)行
8.4.2 交叉的線程執(zhí)行
8.4.3 線程執(zhí)行的小結
8.4.4 多線程的優(yōu)點
8.4.5 使程序成為多線程的兩種方法
8.4.6 多線程和程序終止
8.4.7 用戶線程和守護線程
8.4.8 線程優(yōu)先級
8.4.9 線程狀態(tài)
8.4.10 線程組
8.4.11 線程同步
8.4.12 join方法
8.4.13 線程同步的需要
8.4.14 臨界區(qū)和互斥
8.4.15 同步線程間的通信
8.4.16 wait方法和通知
8.4.17 notify和notifyAll方法
8.4.18 死鎖
8.4.19 不遭反對的Thread構造函數和方法小結
8.5 應用舉例:哲學家進餐問題
8.5.1 問題
8.5.2 輸出舉例
8.5.3 解決方法
8.5.4 Java實現(xiàn)
8.5.5 討論
8.5.6 對臨界區(qū)問題的解決方法
8.6 Java補充材料
8.6.1 遭反對的線程方法
8.6.2 線程、編譯器優(yōu)化和Volatile修飾符
8.7 通常錯誤和安全實踐
8.8 編程練習
第9章 網絡編程
9.1 基本概念
9.1.1 IP地址
9.1.2 包結構
9.1.3 端口號
9.1.4 套接字
9.1.5 可靠傳輸和最佳試驗傳輸
9.1.6 防火墻和代理服務器
9.2 套接字
9.2.1 客戶套接字
9.2.2 服務器套接字
9.2.3 數據報套接字
9.2.4 系列化與套接字
9.2.5 組播套接字
9.2.6 Java安全套接字擴充
9.2.7 在一臺獨立運行的機器上測試分布式應用程序
9.3 應用舉例:一個多線程的俗語服務器
9.3.1 問題
9.3.2 輸入/輸出舉例
9.3.3 解決方法
9.3.4 Java實現(xiàn)
9.3.5 討論
9.3.6 客戶
9.4 applet
9.4.1 Applet和JApplet類
9.4.2 初始化、開始和結束一個applet
9.4.3 appletviewer實用程序
9.4.4 通信applet
9.4.5 JAR文件
9.4.6 applet的安全性和沙盒機制
9.4.7 Java應用程序作為applet的主機程序
9.5 應用舉例:MACE作為帶套接字的applet
9.5.1 問題
9.5.2 輸入/輸出舉例
9.5.3 解決方法
9.5.4 Java實現(xiàn)
9.5.5 討論
9.6 遠程方法調用
9.6.1 RMI服務器和客戶舉例
9.6.2 RMI客戶
9.6.3 安全許可
9.6.4 RMI服務器
9.6.5 RMI的激活
9.6.6 RMI和Jini
9.7 應用舉例:矩陣的代數運算
9.7.1 問題
9.7.2 輸入/輸出舉例
9.7.3 解決方法
9.7.4 Java實現(xiàn)
9.7.5 討論
9.7.6 矩陣加法和乘法的時間復雜性
9.8 對象請求代理程序和CORBA
9.8.1 CORBA應用程序舉例
9.8.2 IDL文件
9.8.3 服務器程序
9.8.4 CORBA命名服務
9.8.5 客戶程序
9.8.6 運行應用程序
9.8.7 動態(tài)調用接口
9.8.8 聯(lián)網技術小結
9.9 Java補充材料
9.9.1 jar實用程序
9.9.2 applet作為CORBA客戶程序的安全問題
9.10 通常錯誤和安全實踐
9.11 編程練習
第10章 精選主題
10.1 bean
10.1.1 組件屬性的動態(tài)編輯
10.1.2 屬性改變事件
10.1.3 bean box
10.1.4 Enterprise Java Bean
10.2 安全和密碼技術
10.2.1 基本安全結構
10.2.2 安全管理器
10.2.3 訪問控制器
10.2.4 權限
10.2.5 安全策略文件
10.2.6 密碼技術
10.2.7 消息摘要和數字簽名
10.2.8 私人密鑰系統(tǒng)和公共密鑰系統(tǒng)
10.2.9 產生與驗證數字簽名
10.2.10 Java密碼技術的擴展
10.3 反射
10.3.1 系列化檢測
10.3.2 獲取運行時的類信息
10.3.3 反射和bean
10.4 servlet和數據庫
10.4.1 servlet的基本概念
10.4.2 動作標簽
10.4.3 doGet和doPost回調
10.4.4 JDBC的基本概念
10.5 應用舉例:數據庫網上訪問
10.5.1 問題
10.5.2 輸入/輸出舉例
10.5.3 解決方法
10.5.4 Java實現(xiàn)
10.5.5 討論
10.5.6 servlet Products
10.5.7 SalesServlet
10.6 Java補充材料
10.6.1 bean box工具
10.6.2 Java Servlet開發(fā)工具包
10.6.3 為訪問數據庫Northwind, 建立從JDBC到ODBC的橋
10.7 通常錯誤和安全實踐
10.8 編程練習
附錄A 奇數練習題的提示及解答