目錄
第1章 電腦、網際網路與全球資訊網1.1 簡介1.2 何謂電腦?1.3 電腦的架構1.4 早期的電腦作業系統1.5 個人式、分散式及用戶端/伺服器計算1.6 網際網路與全球資訊網1.7 機器語言、組合語言和高階語言1.8 C/C++的沿革1.9 Java的沿革1.10 Java類別庫1.11 FORTRAN、COBOL、Pascal和Ada111.12 BASIC、VisualBasic、VisualC++、C#、和.NET1.13 典型的Java程式開發環境1.14 關於Java與本書的注意事項1.15 測試並啟動一個Java應用程式1.16 (必讀)軟體工程案例研究:物件技術與統一塑模語言(UML)介紹1.17 綜合整理1.18 網站資源第2章 Java應用程式介紹2.1 簡介2.2 使用Java撰寫第一個程式:列印一行文字2.3 修改第一個Java程式2.4 使用printf方法顯示文字2.5 另一個Java應用程式:整數的加總2.6 記憶體的概念2.7 算術計算2.8 判斷:等號運算子與關係運算子2.9 (選讀)軟體工程案例研究:需求文件檢核2.10 綜合整理第3章 類別與物件簡介3.1 簡介3.2 類別、物件、方法以及實體變數3.3 宣告一個帶有一個方法的類別,並實體產生該類別的物件3.4 宣告一個帶有參數的方法3.5 實體變數,set方法與get方法3.6 基本型別與參考型別3.7 以建構式將物件初始化3.8 浮點數與double型別3.9 (選讀)GUI與繪圖案例研究:使用對話框3.10 (選讀)軟體工程案例研究:辨識需求文件中的類別3.11 綜合整理第4章 控制結構:初論4.1 簡介4.2 演算法4.3 虛擬碼4.4 控制結構4.5 if單一選擇敘述式4.6 if...else選擇敘述式4.7 while迴圈敘述式4.8 演算法規劃:計數器控制迴圈4.9 演算法規劃:警示值控制迴圈4.10 演算法規劃:巢狀控制結構4.11 複合指定運算子4.12 遞增和遞減運算子4.13 基本資料型別4.14 (選讀)GUI與繪圖案例研究:建立簡單的繪圖程式4.15 (選讀)軟體工程案例研究:找出類別的屬性4.16 綜合整理第5章 控制結構:再論5.1 簡介5.2 計數器控制迴圈的基本原理5.3 for重複敘述式5.4 使用for敘述式的範例5.5 do...while重複結構5.6 switch多重選擇敘述式5.7 break與continue敘述式5.8 邏輯運算子5.9 結構化程式設計摘要5.10 (選讀)GUI與繪圖案例研究:繪製長方形與橢圓形5.11 (選讀)軟體工程案例研究:找出物件的狀態與活動5.12 綜合整理第6章 方法:深入探討6.1 簡介6.2 Java的程式模組6.3 static方法、static屬性成員、Math類別6.4 宣告包含多項參數的方法6.5 關於宣告和使用方法的說明6.6 方法呼叫堆疊和活動記錄6.7 引數提升和強制型態轉換6.8 JavaAPI套件6.9 案例研究:亂數的產生6.9.1 通用的亂數縮放和移位6.9.2 測試和除錯用的亂數重複性6.10 案例研究:機率的遊戲(介紹列舉)6.11 宣告的範圍6.12 方法多載6.13 (選讀)GUI與繪圖案例研究:顏色和填滿圖形6.14 (選讀)軟體工程案例研究:找出類別操作6.15 綜合整理第7章 陣列7.1 簡介7.2 陣列7.3 宣告與建立陣列7.4 使用陣列的例子7.5 案例研究:模擬洗牌與發牌7.6 加強版的for迴圈敘述7.7 將陣列傳至方法7.8 案例研究:使用陣列來儲存成績的GradeBook類別7.9 多維陣列(MultidimensionalArrays)7.10 案例研究:使用二維陣列的GradeBook類別7.11 可變長度的引數列7.12 使用命令列的引數7.13 (選讀)GUI與繪圖案例研究:畫弧線7.14 (選讀)軟體工程案例研究:物件之間的合作7.15 綜合整理第8章 類別與物件:深入探討8.1 簡介8.2 Time類別範例研究8.3 成員的存取控制8.4 使用this參照來參用目前物件中的成員8.5 有關Time類別的案例研究:多載化的建構式8.6 預設建構式及無參數建構式8.7 有關Set方法及Get方法的注意事項8.8 合成8.9 列舉8.10 垃圾回收與finalize方法8.11 static類別成員8.12 static匯入8.13 final實體變數8.14 軟體的可重複使用性8.15 資料抽象化與封裝8.16 Time類別的案例討論:產生套件8.17 套件的存取8.18 (選讀)GUI及繪圖案例研究:使用繪圖功能物件8.19 (選讀)軟體工程案例研究:開始撰寫ATM系統類別程式8.20 綜合整理第9章 物件導向程式設計:繼承9.1 簡介9.2 父類別與子類別9.3 protected方法9.4 父類別與子類別之間的關係9.4.1 建立並使用CommissionEmployee類別9.4.2 使用繼承機制去建立一個BasePlusCommissionEmployee類別9.4.3 建立一個CommissionEmployee-BasePlusCommissionEmployee繼承階層體系9.4.4 使用protected實體變數的CommissionEmployee-BasePlusCommissionEmployee繼承階層體系9.4.5 使用private實體變數的CommissionEmployee-BasePlusCommissionEmployee繼承階層體系9.5 子類別裡的建構式9.6 使用繼承的軟體工程9.7 Object類別9.8 (選讀)GUI與圖形案例研究:使用標籤顯示文字與影像9.9 綜合整理第10章 物件導向程式設計:多型10.1 簡介10.2 多型的各種範例10.3 說明多型的行為10.4 抽象類別與方法10.5 案例研究:利用多型建立薪資系統10.5.1 建構抽象父類別Employee10.5.2 建構具象子類別SalariedEmployee10.5.3 建構具象子類別HourlyEmployee10.5.4 建構具象子類別CommissionEmployee10.5.5 建構間接具象子類別BasePlusCommissionEmployee10.5.6 說明多型的處理程序,instanceof運算子以及向下轉型10.5.7 父類別與子類別變數之間可允許的指定動作之摘要說明10.6 final方法與類別10.7 案例研究:建立並使用介面10.7.1 開發一個Payable階層體系10.7.2 宣告介面Payable10.7.3 建構出類別Invoice10.7.4 修改Employee類別,以執行Payable介面10.7.5 修改SalariedEmployee類別,以便使用在Payable階層體系10.7.6 運用Payable介面並以多型機制處理Invoice物件以及Employee物件10.7.7 利用介面來宣告常數10.7.8 JavaAPI常見的介面10.8 (選讀)GUI與繪圖案例研究:運用多型機制繪製圖形10.9 (選讀)軟體工程案例研究:將繼承納入ATM系統中10.10 綜合整理第11章 GUI元件:初論11.1 簡介11.2 (以GUI為基礎)利用JOptionPane的簡易輸入輸出11.3 概述Swing元件11.4 在視窗中顯示文字和圖像11.5 文字欄位以及利用巢狀式類別的事件處理簡介11.6 常見的GUI事件型別和傾聽者介面11.7 事件處理的運作方法11.8 JButton11.9 維護狀態的按鈕11.9.1 JCheckBox11.9.2 JRadioButton11.10 JComboBox以及利用匿名的內部類別來處理事件11.11 JList11.12 多重選擇清單11.13 滑鼠事件的處理11.14 配接器(adapter)類別11.15 利用滑鼠繪圖的JPanel子類別11.16 鍵盤事件處理11.17 版面管理員11.17.1 FlowLayout11.17.2 BorderLayout11.17.3 GridLayout11.18 利用面版來管理更複雜的版面11.19 JTextArea11.20 總結第12章 圖形繪圖與Java2D12.1 簡介12.2 圖形化環境與圖形化物件12.3 色彩控制12.4 字型控制12.5 繪製線段、矩形和橢圓12.6 繪製弧線12.7 繪製多邊形與多義線12.8 Java2DAPI12.9 結論第13章 例外處理13.1 簡介13.2 例外處理概述13.3 範例:未使用例外處理將數值除以零13.4 範例:處理ArithmeticExceptions和InputMismatchExceptions13.5 何時使用例外處理13.6 Java的例外階層13.7 finally區塊13.8 堆疊輾轉開解13.9 printStackTrace、getStackTrace和getMessage13.10 連鎖例外13.11 宣告新的例外型別13.12 先決條件和後續條件13.13 判斷提示13.14 綜合整理第14章 檔案和串流14.1 簡介14.2 資料階層14.3 檔案和串流14.4 File類別14.5 循序存取的文字檔案14.5.1 建立一個循序存取的文字檔案14.5.2 從循序存取的文字檔案中讀取資料14.5.3 案例研究:信用查詢程式14.5.4 更新循序存取的檔案14.6 物件序列化14.6.1 利用物件序列化來建立循序存取的檔案14.6.2 從循序存取檔案中讀取資料並將其反序列化14.7 隨機存取檔案14.7.1 建立隨機存取檔案14.7.2 將資料隨機地寫入隨機存取檔案14.7.3 從隨機存取檔案中循序讀取資料14.7.4案例研究:交易處理程式14.8 更多的java.io類別14.9 利用JFileChooser開啟檔案14.10 綜合整理第15章 遞迴15.1 簡介15.2 遞迴觀念15.3 使用遞迴的例子:階乘15.4 使用遞迴的例子:費氏數列15.5 遞迴及方法呼叫堆疊15.6 遞迴vs.迴圈15.7 字串排列15.8 河內塔15.9 碎形15.10 遞迴回溯法15.11 綜合整理15.12 網路資源第16章 搜尋與排序16.1 概論16.2 搜尋的演算法16.2.1 線性搜尋16.2.2 二元搜尋16.3 排序的演算法16.3.1 選擇分類排序16.3.2 插入排序16.3.3 合併分類排序16.4 約束條件16.5 綜合整理第17章 資料結構17.1 簡介17.2 基本型別的型別外覆類別17.3 Autobox與Auto-Unbox17.4 自我參照類別17.5 動態記憶體配置17.6 鏈結串列17.7 堆疊17.8 佇列17.9 樹17.10 結論第18章 泛型18.1 簡介18.2 使用泛型方法的動機18.3 泛型方法:實作和編譯時期轉換18.4 額外的編譯時期轉換議題:使用型別參數當成方法回返型別18.5 泛型方法多載化18.6 泛型類別18.7 原始型別18.8 接收型別參數的方法中的萬用字元18.9 泛型和繼承:注意事項18.10 綜合整理18.11 網路和網頁資源第19章 集合19.1 簡介19.2 集合概述19.3 Arrays類別19.4 Collection介面與Collections類別19.5 串列19.5.1 ArrayList和Iterator19.5.2 鏈結串列(LinkedList)19.5.3 向量(Vector)19.6 集合演算法19.6.1 排序(sort)演算法19.6.2 洗牌(shuffle)演算法19.6.3 反序(reverse)、填滿(fill)、複製(copy)、最大值(max)及最小值(min)演算法19.6.4 二元搜尋演算法(binarySearch)19.6.5 插入全部(addAll)、計算頻率(frequency)及差集(disjoint)演算法19.7 java.util套件中的Stack類別19.8 PriorityQueue類別與Queue介面19.9 Set19.10 Map19.11 Properties類別19.12 同步化的集合19.13 不允許修改的集合19.14 抽象實作19.15 結論第20章 JavaApplets的介紹20.1 簡介20.2 JDK提供的Applets範例20.3 簡單的JavaApplet:繪出字串20.3.1 在appletviewer內執行一Applet20.3.2 在網路瀏覽器上執行Applet20.4 Applet生命週期中使用到的方法20.5 用init方法初始化實體變數20.6 砂盒安全模型(SandboxSecurityModel)20.7 網際網路資源20.8 綜合整理第21章 多媒體:Applets和應用程式21.1 簡介21.2 載入、顯示和調整影像大小21.3 將一系列的影像製成動畫21.4 影像地圖21.5 載入並播放聲音檔案21.6 使用JavaMediaFramework播放影片和其他媒體21.7 綜合整理21.8 網路和網頁資源第22章 使用者圖形介面元件:再論22.1 簡介22.2 JSlider22.3 視窗:其他注意事項22.4 使用Frame的功能表22.5 JPopupMenu22.6 可插入的感視元件22.7 JDesktopPane和JInternalFrame22.8 JTabbedPane22.9 版面管理員:BoxLayout和GridBagLayout22.10 綜合整理第23章 多執行緒23.1 簡介23.2 執行緒的狀態:執行緒的生命週期23.3 執行緒的優先權與排程23.4 建立並執行執行緒23.5 執行緒的同步23.6 未同步的生產者/消費者關係23.7 同步的生產者/消費者關係23.8 生產者/消費者關係:環型緩衝區23.9 生產者/消費者關係:ArrayBlockingQueue23.10 GUI的多重執行緒23.11 java.util.concurrent的其他類別和介面23.12 監控器和監控器鎖23.13 綜合整理第24章 網路連結24.1 簡介24.2 操作URL24.3 讀取Web伺服器上的檔案24.4 建立使用串流socket的簡易伺服器24.5 建立使用串流socket的簡易客戶端24.6 使用串流socket連線來互動的客戶端/伺服器24.7 使用datagram來互動的非連線導向客戶端/伺服器24.8 使用多執行緒伺服器的主從架構井字遊戲24.9 網路安全24.10 案例探討:DeitelMessenger伺服器和客戶端24.10.1 DeitelMessengerServer以及支援的類別24.10.2 DeitelMessenger客戶端和支援的類別24.11 總結第25章 利用JDBC存取資料庫25.1 簡介25.2 關聯式資料庫25.3 關聯式資料庫概觀:books資料庫25.4 SQL25.4.1 基本的SELECT查詢25.4.2 WHERE子句25.4.3 ORDERBY子句25.4.4 從數個表格中整合資料:INNERJOIN25.4.5 INSERT敘述句25.4.6 UPDATE敘述句25.4.7 DELETE敘述句25.5 如何安裝MySQL及MySQLConnector/J25.6 如何設定MySQL使用者帳號25.7 在MySQL中產生books資料庫25.8 使用JDBC處理資料庫25.8.1 連結和查詢資料庫25.8.2 查詢books資料庫25.9 預存程序25.10 RowSet介面25.11 結論25.12 網路資源第26章 Servlets26.1 簡介26.2 Servlet的概觀與架構26.2.1 Servlet介面和Servlet的生命週期26.2.2 HttpServlet類別26.2.3 HttpServletRequest介面26.2.4 HttpServletResponse介面26.3 設定ApacheTomcat伺服器26.4 處理HTTP的get要求26.4.1 部署一個網路程式26.5 處理含有資料的HTTPget要求26.6 處理HTTPpost要求26.7 將使用者請求重新導向到其他資源26.8 多層次程式:在servlet中使用JDBC26.9 歡迎訊息檔26.10 結論26.11 網路資源第27章 JavaServerPages(JSP)27.1 簡介27.2 JavaServerPages概觀27.3 第一個JSP範例27.4 隱含物件27.5 Scripting27.5.1 Scripting元件27.5.2 Scripting範例27.6 標準動作27.6.1 動作27.6.2 動作27.6.3 動作27.7 指令27.7.1 page指令27.7.2 include指令27.8 實例練習:訪客留言版27.9 結論27.10 網路資源第28章 格式化輸出28.1 簡介28.2 串流28.3 使用printf將輸出格式化28.4 印出整數28.5 印出浮點數28.6 印出字串與字元28.7 印出日期和時間28.8 其他轉換字元28.9 指定欄位寬度和精準度28.10 在printf的格式化字串中使用flag28.11 使用引數索引輸出28.12 印出符號和控制字串28.13 使用Formatter類別格式化輸出28.14 結論第29章 字串、字元和正規化表示法29.1 簡介29.2 字元和字串的基本原理29.3 String類別29.3.1 String建構式29.3.2 String的length、charAt和getChars方法29.3.3 字串比較29.3.4 在字串中找出字元或子字串29.3.5 從字串中找出子字串29.3.6 連接字串29.3.7 其它的字串方法29.3.8 String的valueOf方法29.4 StringBuffer類別29.4.1 StringBuffer建構式29.4.2 StringBuffer的length、capacity、setLength和ensureCapacity方法29.4.3 StringBuffer的charAt、setCharAt、getChars和reverse方法29.4.4 StringBuffer的append方法29.4.5 StringBuffer的插入和刪除方法29.5 Character類別29.6 StringTokenizer類別29.7 正規化表示法、Pattern類別和Matcher類別29.8 結論
第1章 電腦、網際網路與全球資訊網1.1 簡介1.2 何謂電腦?1.3 電腦的架構1.4 早期的電腦作業系統1.5 個人式、分散式及用戶端/伺服器計算1.6 網際網路與全球資訊網1.7 機器語言、組合語言和高階語言1.8 C/C++的沿革1.9 Java的沿革1.10 Java類別庫1.11 FORTRAN、COBOL、Pascal和Ada111.12 BASIC、VisualBasic、VisualC++、C#、和.NET1.13 典型的Java程式開發環境1.14 關於Java與本書的注意事項1.15 測試並啟動一個Java應用程式1.16 (必讀)軟體工程案例研究:物件技術與統一塑模語言(UML)介紹1.17 綜合整理1.18 網站資源第...