內容簡介目錄從本書獲得的各項大獎以及來自世界各地的讀者評論中,不難看出這是一本經典之作。本書作者有多年的教學經驗,對C、C++、Java語言都有獨到、深入的理解。因此他非常了解如何教授Java語言這門課程,也非常明白語言教學中的難點及人們的困惑。作者以通俗易懂及小而直接的示例解釋了一個個晦澀抽象的概念,精心選取“對讀者理解Java語言來說最為重要”的部分編寫成書。同時又在隨書光盤中提供了大量參考材料—這也是本書絕對物超所值的地方。隨書光盤沒有包含本書的源代碼(可以從支持網站www.MindView.net免費下載),而是提供了大量作者講授的討論課內容及本書的前2版內容。本書內容豐富—從Java的基礎語法到最高級特性,適合各層次的Java程序員閱讀,同時也是高等院校講授面向對象程序設計語言及Java語言的絕佳教材。第1章對象導論11.1抽象過程11.2每個對象都有一個接口21.3每個對象都提供服務41.4被隱藏的具體實現51.5復用具體實現51.6繼承:復用接口61.7伴隨多態(tài)的可互換對象91.8對象的創(chuàng)建、使用和生命期121.8.1集合與迭代器131.8.2單根繼承結構141.8.3向下轉型與模板/泛型151.8.4確保正確清理151.9異常處理:處理錯誤161.10并發(fā)性171.11持久性171.12Java與Internet181.12.1Web是什么181.12.2客戶端編程191.12.3服務器端編程231.12.4應用231.13Java為什么成功241.13.1系統(tǒng)易于表達、易于理解241.13.2類庫的巨大影響力241.13.3錯誤處理241.13.4大型程序設計241.14Java與C++251.15總結26第2章一切都是對象272.1用引用操縱對象272.2必須由你創(chuàng)建所有對象282.2.1存儲到什么地方282.2.2特例:基本類型292.2.3Java中的數組302.3永遠不需要銷毀對象302.3.1作用域302.3.2對象的作用域312.4創(chuàng)建新的數據類型:類312.5方法、參數和返回值332.6構建一個Java程序352.6.1名字可見性352.6.2運用其他構件352.6.3static 關鍵字362.7你的第一個Java程序372.8注釋和嵌入式文檔392.8.1注釋文檔392.8.2語法392.8.3嵌入式HTML402.8.4一些標簽示例412.8.5文檔示例422.9編碼風格432.10總結432.11練習43第3章控制程序流程453.1使用Java操作符453.1.1優(yōu)先級453.1.2賦值453.1.3算術操作符483.1.4自動遞增和遞減503.1.5關系操作符523.1.6邏輯操作符533.1.7按位操作符553.1.8移位操作符563.1.9三元操作符 if-else593.1.10逗號操作符603.1.11字符串操作符 +603.1.12使用操作符時常犯的錯誤613.1.13類型轉換操作符613.1.14Java沒有“sizeof”633.1.15再論優(yōu)先級633.1.16操作符小結643.2執(zhí)行流程控制733.2.1true和false733.2.2if-else733.2.3return743.2.4迭代753.2.5do-while763.2.6for763.2.7break和 continue783.2.8switch833.3總結863.4練習86第4章初始化與清理894.1用構造器確保初始化894.2方法重載914.2.1區(qū)分重載方法934.2.2涉及基本類型的重載934.2.3以返回值區(qū)分重載方法984.2.4缺省構造器984.2.5this關鍵字994.3清理:終結處理和垃圾回收1024.3.1finalize()的用途何在1034.3.2你必須實施清理1034.3.3終結條件1044.3.4垃圾回收器如何工作1054.4成員初始化1074.4.1指定初始化1084.4.2構造器初始化1094.5數組初始化1154.6總結1214.7練習122第5章隱藏具體實現1255.1包:程序庫單元1255.1.1創(chuàng)建獨一無二的包名1275.1.2定制工具庫1295.1.3用 import改變行為1305.1.4對使用包的忠告1305.2Java訪問權限修飾詞1315.2.1包訪問權限1315.2.2public:接口訪問權限1315.2.3private: 你無法訪問1335.2.4protected:繼承訪問權限1345.3接口和實現1355.4類的訪問權限1365.5總結1385.6練習139第6章復用類1416.1組合語法1416.2繼承語法1446.3結合使用組合和繼承1486.3.1確保正確清理1496.3.2名稱屏蔽1526.4在組合與繼承之間選擇1536.5protected關鍵字1556.6增量開發(fā)1566.7向上轉型1566.8final關鍵字1586.8.1final 數據1586.8.2final 方法1616.8.3final 類1636.8.4有關final的忠告1636.9初始化及類的加載1646.10總結1666.11練習166第7章多態(tài)1697.1再論向上轉型1697.2轉機1727.2.1方法調用綁定1727.2.2產生正確的行為1737.2.3可擴展性1757.2.4缺陷:“覆蓋”私有方法1787.3抽象類和抽象方法1797.4構造器和多態(tài)1827.4.1構造器的調用順序1827.4.2繼承與清理1847.4.3構造器內部的多態(tài)方法的行為1867.5用繼承進行設計1887.5.1純繼承與擴展1897.5.2向下轉型與運行時類型識別1917.6總結1927.7練習193第8章接口與內部類1958.1接口1958.1.1Java中的多重繼承1988.1.2通過繼承來擴展接口2008.1.3群組常量2028.1.4初始化接口中的字段2038.1.5嵌套接口2048.2內部類2078.2.1內部類與向上轉型2088.2.2在方法和作用域內的內部類2108.2.3匿名內部類2118.2.4鏈接到外部類2158.2.5嵌套類2168.2.6引用外圍類的對象2188.2.7從多層嵌套類中訪問外部類的成員2198.2.8內部類的繼承2208.2.9內部類可以被覆蓋嗎2208.2.10局部內部類2228.2.11內部類標識符2238.3為什么需要內部類2248.3.1閉包與回調2268.3.2內部類與控制框架2288.4總結2338.5練習233第9章通過異常處理錯誤2359.1基本異常2359.2捕獲異常2379.2.1try塊2379.2.2異常處理程序2379.3創(chuàng)建自定義異常2389.4異常說明2419.5捕獲所有異常2429.5.1重新拋出異常2439.5.2異常鏈2469.6Java標準異常2499.7使用finally進行清理2519.7.1finally用來做什么2529.7.2缺憾:異常丟失2549.8異常的限制2559.9構造器2589.10異常匹配2609.11其他可選方式2619.11.1歷史2629.11.2觀點2639.11.3把異常傳遞給控制臺2659.11.4把“被檢查的異?!鞭D換為“不檢查的異常”2659.12異常使用指南2679.13總結2679.14練習267第10章類型檢查26910.1為什么需要RTTI26910.1.1Class對象27110.1.2類型轉換前先做檢查27310.2RTTI語法28210.3反射:運行時的類信息28410.4總結28810.5練習288第11章對象的集合29111.1數組29111.1.1數組是第一級對象29211.1.2返回一個數組29411.1.3Arrays類29611.1.4填充數組30211.1.5復制數組30411.1.6數組的比較30511.1.7數組元素的比較30611.1.8數組排序30811.1.9在已排序的數組中查找31011.1.10對數組的小結31111.2容器簡介31111.2.1容器的打印31211.2.2填充容器31311.3容器的缺點:未知類型31911.3.1有時候它也能工作32011.3.2制作一個類型明確的ArrayList32211.4迭代器32311.5容器的分類法32611.6Collection的功能方法32811.7List的功能方法33111.7.1使用LinkedList制作棧33411.7.2使用LinkedList制作隊列33511.8Set的功能方法33611.9Map的功能方法33911.9.1SortedMap34311.9.2LinkedHashMap34411.9.3散列法與散列碼34511.9.4覆蓋hashCode()35311.10持有引用35611.11再論迭代器36011.12選擇接口的不同實現36111.12.1對List的選擇36111.12.2對Set的選擇36411.12.3對Map的選擇36611.13List的排序和查詢36811.14實用方法36911.14.1設定Collection或Map為不可修改37111.14.2Collection或Map的同步控制37211.15未獲支持的操作37311.16Java 1.0/1.1 的容器37511.16.1Vector和Enumeration37511.16.2Hashtable37611.16.3Stack37611.16.4BitSet37711.17總結37811.18練習379第12章Java I/O系統(tǒng)38312.1File類38312.1.1目錄列表器38312.1.2目錄的檢查及創(chuàng)建38612.2輸入和輸出38812.2.1InputStream類型38912.2.2OutputStream類型38912.3添加屬性和有用的接口39012.3.1通過FilterInputStream從Input-Stream讀取數據39112.3.2通過FilterOutPutStream向OutputStream寫入39112.4Reader和Writer39212.4.1數據的來源和去處39312.4.2更改流的行為39312.4.3未發(fā)生變化的類39412.5自我獨立的類:RandomAccessFile39412.6I/O流的典型使用方式39512.6.1輸入流39712.6.2輸出流39812.6.3管道流39912.7文件讀寫的實用工具40012.8標準I/O40112.8.1從標準輸入讀取40112.8.2將System.out轉換成PrintWriter40212.8.3標準I/O重定向40212.9新I/O40312.9.1轉換數據40612.9.2獲取基本類型40912.9.3視圖緩沖器41112.9.4用緩沖器操縱數據41512.9.5緩沖器的細節(jié)41512.9.6存儲器映射文件41912.9.7文件加鎖42212.10壓縮42412.10.1用GZIP進行簡單壓縮42412.10.2用Zip進行多文件保存42512.10.3Java檔案文件42812.11對象序列化42912.11.1尋找類43212.11.2序列化的控制43312.11.3使用“持久性”44012.12Preferences44512.13正則表達式44712.13.1創(chuàng)建正則表達式44712.13.2量詞44812.13.3模式和匹配器44912.13.4split()45512.13.5替換操作45612.13.6reset()45812.13.7正則表達式和Java I/O45912.13.8需要StringTokenizer嗎45912.14總結46012.15練習461第13章并發(fā)46313.1動機46313.2基本線程46413.2.1讓步46613.2.2休眠46713.2.3優(yōu)先權46913.2.4后臺線程47113.2.5加入到某個線程47313.2.6編碼的變體47513.2.7建立有響應的用戶界面48013.3共享受限資源48113.3.1不正確地訪問資源48113.3.2資源沖突48413.3.3解決共享資源競爭48613.3.4臨界區(qū)49113.4線程狀態(tài)49513.5線程之間的協(xié)作49613.5.1等待與通知49613.5.2線程間使用管道進行輸入/輸出49913.5.3更復雜的協(xié)作50113.6死鎖50113.7正確的停止方法50413.8中斷阻塞線程50513.9線程組50613.10總結50713.11練習508第14章創(chuàng)建窗口與applet程序51114.1applet基礎51214.1.1applet的限制51214.1.2applet的優(yōu)勢51314.1.3應用框架51314.1.4在Web瀏覽器中運行applet51414.1.5使用Appletviewer工具51614.1.6測試applet51614.2從命令行運行applet51714.3創(chuàng)建按鈕52014.4捕獲事件52014.5文本區(qū)域52214.6控制布局52414.6.1BorderLayout52414.6.2FlowLayout52514.6.3GridLayout52514.6.4GridBagLayout52614.6.5絕對定位52614.6.6BoxLayout52614.6.7最好的方式是什么53014.7Swing事件模型53014.7.1事件與監(jiān)聽器的類型53014.7.2跟蹤多個事件53514.8Swing組件一覽53714.8.1按鈕53814.8.2圖標54014.8.3工具提示54214.8.4文本域54214.8.5邊框54414.8.6滾動面板54514.8.7一個迷你編輯器54714.8.8復選框54814.8.9單選按鈕54914.8.10組合框(下拉列表)55014.8.11列表框55114.8.12頁簽面板55314.8.13消息框55414.8.14菜單55514.8.15彈出式菜單56014.8.16繪圖56214.8.17對話框56414.8.18文件對話框56714.8.19Swing組件上的HTML56914.8.20滑塊與進度條57014.8.21樹57114.8.22表格57314.8.23選擇外觀57414.8.24剪貼板57614.9把applet打包進JAR文件57814.10為applet簽名57914.11JNLP與Java Web Start58314.12編程技術58714.12.1動態(tài)綁定事件58714.12.2將業(yè)務邏輯與用戶界面邏輯相分離58914.12.3規(guī)范方式59114.13Swing與并發(fā)59114.13.1再論Runnable59114.13.2管理并發(fā)59314.14可視化編程與JavaBean59614.14.1JavaBean是什么59714.14.2使用Introspector抽取出BeanInfo59814.14.3一個更復雜的Bean60314.14.4JavaBean與同步60614.14.5把Bean打包60914.14.6對Bean更高級的支持61014.14.7有關Bean的其他讀物61114.15總結61114.16練習611第15章發(fā)現問題61515.1單元測試61615.1.1一個簡單的測試框架61715.1.2JUnit62615.2利用斷言提高可靠性63015.2.1斷言語法63015.2.2為“按契約設計”使用斷言63315.2.3示例:按契約設計+白盒單元測試63515.3用Ant構建63915.3.1使所有事物自動化63915.3.2使用make的問題64015.3.3Ant:事實上的標準64015.3.4用CVS進行版本控制64315.3.5每日構建64515.4日志64515.4.1日志級別64715.4.2LogRecord64915.4.3處理器65015.4.4過濾器65415.4.5格式器65515.4.6例子:發(fā)送email報告日志消息65615.4.7通過名字空間控制日志級別65815.4.8大型工程的日志實踐66015.4.9小結66215.5調試66315.5.1使用JDB調試66315.5.2圖形化調試器66715.6剖析和優(yōu)化66715.6.1追蹤內存消費66815.6.2追蹤CPU的使用66815.6.3覆蓋測試66815.6.4JVM剖析接口66815.6.5使用HPROF66915.6.6線程性能67015.6.7優(yōu)化指南67115.7doclet67115.8總結67215.9練習673第16章分析與設計67516.1方法學67516.2階段0:制定計劃67616.3階段1:做什么67716.4階段2:如何構建67916.4.1對象設計的五個階段68016.4.2對象開發(fā)指南68116.5階段3:構建系統(tǒng)核心68116.6階段4:迭代用例68116.7階段5:演化68216.8成功的計劃68316.9極限編程68316.9.1優(yōu)先編寫測試68316.9.2結對編程68416.10過渡策略68516.10.1指南68516.10.2管理上的障礙68616.11總結687附錄A對象的傳遞與返回689附錄BJava編程指南723附錄C補充材料731附錄D資源735索引739