【缺書】【不接受訂購】
本書是一本與眾不同的Java入門好書。作者以獨特的視角,向Java初學者講述了如何才能真正理解和掌握Java語言。本書充分考慮了初學Java語言的種種困難,講解時細致入微,抽絲剝繭,層層推進,并采用對比、比喻和類比的方式講解,還給出了大量的流程圖幫助讀者理解各種概念和程序的運行過程。另外,作者專門錄制了近16小時的多媒體語音教學視頻幫助讀者直觀地學習。這些視頻和書中的源代碼一起收錄于本書的DVD光盤中。本書分3篇。第1篇為Java語言基本語法,包括Java語言概述、配置開發環境、Java中的基本數據類型、Java運算符、Java流程控制語句和數組。第2篇為Java語言高級語法,包括類、對象、方法、繼承、多態、修飾符、接口、抽象類、內部類、Java異常處理和多線程編程。第3篇為Java語言編程進階,包括Java編程常用知識、Java文件編程、Java文件I/O編程、Java TCP編程、Java UDP編程、Java Swing編程、JDBC編程,最后還給出了一個聊天程序實例和一個數據表操作窗口實例,將Swing、UDP、Java集合類、線程同步、接口和JDBC編程有機地結合起來,展示了開發一個簡單程序的典型步驟。本書適合廣大想學習一門編程語言的讀者、沒有任何基礎的Java入門讀者、Java自學人員、從其他語言轉向Java語言的讀者、大中專院校的學生和社會培訓學生。
第1篇 Java語言基本語法第1章 讓自己的第一個Java程序跑起來 2 教學視頻:19分鐘1.1 想要用Java改變這個世界嗎? 21.1.1 Java有什么優勢? 21.1.2 Java在哪兒? 31.2 準備好開始Java之旅 31.2.1 下載JDK 41.2.2 安裝JDK 51.2.3 配置環境變量 61.2.4 測試環境是否安裝成功 81.2.5 如果失敗了怎么辦? 91.3 讓自己的第一個程序運行起來 101.3.1 編寫自己的Hello World源程序 101.3.2 編譯自己的HelloWorld程序 111.3.3 讓代碼運行起來 131.4 初探Hello World 141.4.1 類(Class):Java世界中一類物體 141.4.2 方法(Method):物體的功能 151.4.3 main()方法:所有Java程序執行的起點 151.5 名詞解釋 161.5.1 JDK和Java平臺 161.5.2 Java編譯器(Java Compiler) 171.5.3 Java類庫(Java Class Libraries) 171.5.4 Java虛擬機(Java Virtual Machine) 171.5.5 HelloWorld的整個流程 171.6 小結:我們學會了編譯和運行一個Java程序! 181.7 習題 19第2章 搭建自己的集成開發環境 20 教學視頻:31分鐘2.1 安裝集成開發環境 202.1.1 集成開發環境有哪些 202.1.2 安裝Eclipse 212.2 Eclipse界面介紹 232.2.1 啟動Eclipse 232.2.2 Eclipse的Perspective 242.2.3 Eclipse的菜單 252.2.4 Eclipse的工具條 252.2.5 Eclipse輔助視圖區 252.2.6 Eclipse中Package Explorer 262.2.7 Eclipse中的源代碼編輯器 262.2.8 Eclipse的設置窗口 262.2.9 Eclipse中的其他視圖 272.3 如何使用Eclipse 282.3.1 在Eclipse中創建自己的第一個項目 282.3.2 在Eclipse中編寫HelloWorld程序 292.3.3 通過Eclipse運行Hello World 312.4 小結:Eclipse--功能很強大 322.5 習題 32第3章 Java中的基本數據類型和運算符 33 教學視頻:1小時5分鐘3.1 Java中的基本數據類型 333.1.1 基本數據類型——編程語言中的數據原子 333.1.2 Java中的基本上數據類型介紹 343.1.3 基本數據類型值域 343.2 Java運算符 363.2.1 變量的概念 363.2.2 插曲:Java中的語句 373.2.3 創建一個變量和變量名的規范 373.2.4 Java中的基本運算符和表達式 393.2.5 Java中的布爾運算符 433.3 基本數據類型運算的難點 473.3.1 強制類型轉換——小數哪里去了 483.3.2 類型的轉換在運算中悄悄進行 503.3.3 強制類型轉換最優先 523.3.4 等號其實不簡單 523.3.5 小心使用浮點數進行比較 533.3.6 boolean和char 553.3.7 不要使用還沒有創建出來的變量 573.3.8 String--char串起的項鏈 583.3.9 轉義符——看不見寫得出 613.4 小結:基本數據類型-- Java中一切數據和運算的基礎 633.5 習題 65第4章 Java中的程序執行流程 67 教學視頻:1小時57分鐘4.1 順序執行 674.2 使用if-else讓程序懂得判斷 684.2.1 if語句 684.2.2 if語句的嵌套 714.2.3 if-else語句 734.2.4 if-else語句嵌套 754.3 使用while進行循環 764.3.1 使用while語句 764.3.2 使用do-while語句 794.4 使用for進行循環 804.4.1 自增和自減操作 804.4.2 for語句 824.4.3 for語句省略形式 844.5 語句中不能不說的事 844.5.1 小心復雜語句中創建的變量 854.5.2 別讓循環次數給弄懵了 864.5.3 循環的嵌套 874.6 continue關鍵字與break關鍵字 884.6.1 continue關鍵字 884.6.2 break關鍵字 894.7 使用switch進行跳轉 904.8 大例子 944.8.1 從控制臺讀取數據 944.8.2 結賬程序中的循環 964.9 小結:Java不是一個直腸子 984.10 習題 99第5章 數組 100 教學視頻:35分鐘5.1 什么是數組 1005.1.1 假設:如果需要逐個定義變量 1005.1.2 數組初探 1015.1.3 數組——物以類聚 1045.1.4 數組元素的值內有乾坤 1055.1.5 創建數組的簡潔語法 1065.2 數組的“名”與“實” 1075.2.1 “名”與“實”分離的數組 1075.2.2 一“實”多“名”的數組 1095.2.3 一“實”多“名”帶來的困惑 1115.3 多維數組 1145.3.1 什么是多維數組 1145.3.2 多維數組的實質 1155.4 數組大練兵 1235.4.1 輕松查詢全班成績 1235.4.2 輕松查詢全校成績不在話下 1245.4.3 楊輝三角 1255.5 小結:方便快速的數組 1295.6 習題 129第2篇 Java語言高級語法第6章 Java的類(Class)和對象(Object) 132 教學視頻:59分鐘6.1 駕駛汽車向類(Class)的世界進發 1326.1.1 汽車帶來的問題 1326.1.1 類的組成 1346.1.3 使用自定義的Car類 1366.1.4 類和對象 1396.1.5 源文件的存放 1416.1.5 理解引用 1436.1.7 null關鍵字 1456.2 巧妙使用類中的屬性 1476.2.1 在類中給每個變量一個初始值 1476.2.2 定義自己的引用 1476.2.3 使用點操作符的技巧 1486.2.4 類的數組 1496.3 小結:Java其實是個類和對象的世界 1526.4 習題 153第7章 Java中的方法——給汽車豐富多彩的功能 154 教學視頻:2小時55分鐘7.1 方法:讓汽車動開動 1547.1.1 引出問題:開動汽車 1547.1.2 那么,方法到底是什么呢? 1557.1.3 方法調用過程初探 1567.2 Java普通方法的組成部分 1577.2.1 訪問控制符:public 1587.2.2 返回值和關鍵字void 1587.2.3 方法名(Method Name) 1597.2.4 參數列表(Parameter List) 1597.2.5 方法體(Method Body) 1607.2.6 方法串串燒 1607.3 方法的參數:讓汽車加速 1617.3.1 方法的參數:讓汽車可以加速 1617.3.2 帶參數的方法有何不同? 1627.3.3 讓方法有多個參數 1637.4 返回值:汽車超速了嗎? 1647.4.1 寫一個有返回值的方法 1647.4.2 調用有返回值的方法 1657.4.3 發生了什么?如何使用方法的返回值? 1667.4.4 使用return結束方法 1667.5 方法重載(overload):給汽車加速添個限制 1687.5.1 什么是方法的簽名 1687.5.2 什么是重載?為什么要重載? 1687.5.3 給汽車加個重載的方法 1697.5.4 測試一下 1697.5.5 重載容易引發誤解的兩個地方——返回類型和形參名 1707.5.6 重載中的最難點——參數匹配原則 1717.6 使用類的實例作為方法參數 1727.6.1 超車方法:使用類實例做參數 1727.6.2 調用這個方法 1737.6.3 發生了什么 1747.7 加餐:局部變量和實例變量 1757.7.1 什么是局部變量(Local Variable) 1757.7.2 什么是實例變量(Instance Variable) 1777.8 this關鍵字:指向對象自己的引用 1777.8.1 發現問題:當實例變量和局部變量重名 1777.8.2 經常深藏不露的this關鍵字 1787.8.3 在方法中調用方法 1797.9 構造方法(Constructor) 1817.9.1 構造(Constructor)方法初探 1817.9.2 如何使用構造方法 1827.9.3 留個無參數的構造方法——給重要屬性賦初始值 1837.9.4 在構造方法中調用構造方法 1847.10 方法大匯總 1857.10.1 本例中用到的類 1867.10.2 使用例程將本章的知識穿起來 1897.11 小結:多方位理解Java方法 1917.12 習題 192第8章 Java中的包(Package)命名習慣和注釋 193 教學視頻:43分鐘8.1 Java中的包(Package) 1938.1.1 Java中的包 1938.1.2 在Eclipse中使用包 1948.1.3 天上掉下個package 1978.1.4 包帶來了什么? 1978.2 import語句:化繁為簡 2008.2.1 import語句 2008.2.2 一網打盡包中所有類 2018.2.3 import語句帶來的小問題 2028.2.4 默認引入的包 2048.3 命名習慣大回顧 2048.4 Java中的注釋 2058.4.1 使用雙斜杠的單行注釋 2058.4.2 多行注釋 2068.4.3 Javadoc注釋 2068.5 小結:包讓Java的類更清晰優雅 2088.6 習題 209第9章 再看數組、字符串和main()方法 210 教學視頻:29分鐘9.1 數組也是類 2109.1.1 得到數組的長度 2109.1.2 加餐:不可改變的final變量 2119.1.3 多維數組的長度 2129.1.4 一維數組的clone()方法 2129.1.5 當數組類型不再是基本數據類型 2149.1.6 多維數組的clone()方法 2179.2 老朋友String類 2209.2.1 遍歷String中的字符 2209.2.2 獲取字符串中的一部分 2229.2.3 判斷兩個字符串是否相等 2239.2.4 判斷字符串的開頭和結尾 2259.2.5 分割字符串 2259.2.6 在字符串中查找子字符串或字符 2269.2.7 替換字符串中的內容 2269.2.8 String對象——磐石刻字 2279.3 String類的最佳拍檔--StringBuffer類 2279.3.1 StringBuffer:專業操縱字符 2289.3.2 String和StringBuffer一個都不能少 2299.4 最熟悉的陌生人:main()方法 2299.4.1 main()方法的參數 2299.4.2 static關鍵字 2329.4.3 當方法遇到static關鍵字 2339.5 小結:學會使用類中的方法 2359.6 習題 236第10章 繼承和多態 237 教學視頻:1小時55分鐘10.1 繼承--最優的解決方案 23710.1.1 飯前水果:實例變量的訪問控制符 23710.1.2 一切還是從汽車開始 23810.1.3 一類車,一個類 24110.1.4 分開也有麻煩 24410.1.5 使用繼承——問題迎刃而解 24510.1.6 使用Bus類 24810.1.7 Java中的單繼承 24810.1.8 Java中的類圖 24910.1.9 萬類之祖——Object類 25010.2 子類對象?父類對象? 25110.2.1 父隨子行 25110.2.2 當構造方法遇到繼承 25410.2.3 記得給類一個無參數的構造方法 25510.2.4 調用父類中的構造方法 25610.2.5 對象也會“變臉” 25810.2.6 遵守語法,正確“變臉” 26210.3 覆蓋--與繼承如影隨形 26410.3.1 當方法不再通用 26410.3.2 覆蓋——讓眾口不再難調 26510.3.3 覆蓋——到底調用了哪個方法 27010.3.4 覆蓋的語法不簡單 27210.3.5 更復雜的使用覆蓋的情況 27410.3.6 覆蓋——不得不打開的潘多拉魔盒 27610.3.7 使用super調用父類中的方法和屬性 27810.4 多態(Polymorphism)以及其他 27910.4.1 多態——運行方知結果 28010.4.2 重載也不簡單 28010.4.3 使用多態構建車隊 28310.5 在多態的環境中撥開迷霧 28410.5.1 神秘的Class類 28410.5.2 覆蓋不再神秘 28510.5.3 instanceof運算符——讓對象告訴你它的類是誰 28610.6 小結:繼承和多態讓世界豐富多彩 28710.7 習題 290第11章 修飾符(Qualifier) 291 教學視頻:26分鐘11.1 插曲:類的組成部分的名字 29111.2 類中的修飾符 29211.2.1 無修飾符類 29211.2.2 類的可見性 29311.2.3 final——讓類不可被繼承 29511.2.4 理解final關鍵字 29611.2.5 總結:類的修飾符 29711.3 方法的修飾符 29711.3.1 方法的訪問控制符 29811.3.2 public:沒有限制的修飾符 29911.3.3 protected:僅對子類和同包的類可見 30011.3.4 默認控制符:僅在本包中可見 30111.3.5 private:僅對本類可見 30311.3.6 理解4個訪問控制符 30411.3.7 訪問控制符可見性匯總 30611.3.8 訪問控制符帶來的覆蓋問題 30611.3.9 final:不允許方法被覆蓋 31011.3.10 重溫靜態方法 31111.3.11 靜態方法——類范圍里的概念 31211.3.12 靜態方法何以為“靜態” 31411.4 變量的修飾符 31611.4.1 變量方法皆成員 31711.4.2 變量的訪問控制符 31711.4.3 使用private修飾類的成員變量 31811.4.4 使用private,然后呢? 32011.4.5 變量的覆蓋 32211.4.6 使用final修飾成員變量 32511.4.7 靜態成員變量 32611.4.8 局部變量的修飾符 32611.4.9 當final遇到引用類型成員變量 32711.5 小結:修飾符作用大 32811.6 習題 330第12章 接口 331 教學視頻:29分鐘12.1 自行車帶來的問題 33112.1.1 記錄馬路上的車輛 33112.1.2 引發問題的自行車 33512.1.3 仔細分析recordTransport()方法 33812.2 初用接口 33912.2.1 準備好需要用到的類 33912.2.2 認識接口的代碼組成 34012.2.3 什么是接口 34112.2.4 使用接口僅需一步——實現接口 34212.2.5 接口——讓類集多重類型于一身 34412.2.6 簡化recordTransport()方法 34712.3 再探接口 34912.3.1 重溫上節中的程序 34912.3.2 面向接口編程 35112.3.3 話說“抽象” 35312.3.4 接口大瘦身 35512.3.5 實現多個接口 35512.3.6 接口中的變量 35712.3.7 接口的繼承 35812.3.8 匹配抽象方法中的類型 35912.3.9 空接口 36112.4 小結:接口的難點在于何時使用 36212.5 習題 364第13章 抽象類和內部類 365 教學視頻:26分鐘13.1 抽象類(Abstract Class) 36513.1.1 不知道怎么打招呼的Person類 36513.1.2 當類中有了抽象方法 36713.1.3 抽象類語法詳解 36813.1.4 理解抽象類的作用 36913.2 內部類的分類(Inner Class) 37013.2.1 成員內部類 37013.2.2 局部內部類 37213.3 成員內部類 37413.3.1 使用成員內部類 37413.3.2 成員內部類的修飾符 37513.3.3 在類外部使用內部類 37613.3.4 非靜態內部類的特性 37813.3.5 外部類訪問成員內部類中的屬性 38213.3.6 靜態成員內部類 38313.4 局部內部類 38413.4.1 局部內部類之“局部” 38513.4.2 局部內部類之“內部類” 38613.4.3 使用局部內部類 38813.5 匿名內部類(Anonymous inner classes) 38913.5.1 準備工作 38913.5.2 匿名內部類的語法 38913.5.3 通過接口使用匿名類 39013.5.4 通過抽象類使用匿名類 39113.6 類,這樣一路走來 39113.7 小結:豐富多彩的類 39513.8 習題 397第14章 Java的異常處理機制 398 教學視頻:36分鐘14.1 認識異常 39814.1.1 異常什么時候發生 39814.1.2 異常是什么 40114.1.3 Java異常機制的流程 40114.2 拋出異常 40314.2.1 異常類的父類——Throwable 40314.2.2 在代碼中使用throw拋出一個異常 40414.2.3 在方法聲明中使用throws 40714.2.4 構造自定義異常類 40914.2.5 使用自定義異常類 41014.3 異常的傳遞 41114.3.1 拋出最確切的異常類型 41114.3.2 Java異常的傳遞 41214.3.3 圖說Java異常的傳遞 41414.4 異常的處理 41814.4.1 把異常捉住 41814.4.2 圖說異常處理流程 42114.4.3 多類異常,一并處理 42414.4.4 try-catch-finally語句 42614.4.5 try-finally語句 43114.4.6 好好利用catch語句 43214.5 異常的類型 43314.5.1 3個類的繼承關系 43314.5.2 必須處理的Exception類 43414.5.3 靈活掌握的RuntimeException類 43414.5.4 不用處理的Error類 43514.6 小結:終止錯誤的蔓延 43514.7 習題 437第15章 多線程編程 438 教學視頻:1小時14分鐘15.1 線程--執行代碼的機器 43815.1.1 線程——執行代碼的基本單位 43815.1.2 演奏會模型 44015.2 Java中的線程編程 44315.2.1 線程類Thread 44315.2.2 覆蓋Thread類的run()方法 44415.2.3 使用Runnable接口 44615.2.4 兩個線程 44815.3 深入學習Thread類 44915.3.1 線程的名字 44915.3.2 得到當前的線程 45115.3.3 讓線程“沉睡” 45315.4 多個線程的故事 45715.4.1 一個有多個線程的程序 45715.4.2 復印社模型 45915.4.3 一個簡單的復印社例程 46115.5 多個線程的同步 46315.5.1 線程同步之synchronized關鍵字 46315.5.2 深入學習synchronized關鍵字 46815.5.3 靜態同步方法 46915.5.4 非靜態的同步方法 47215.5.5 銀行的麻煩——賬戶亂套了 47415.5.6 多角度理解同步方法 48115.5.7 閑話同步方法的使用 48415.5.8 同步代碼塊 48515.5.9 鎖(Lock) 48615.5.10 線程同步之wait()和notify()方法 48815.5.11 wait和notify的順序 49115.6 小結:線程--代碼執行器 49415.7 習題 495第3篇 Java語言編程進階第16章 如何學習本篇 498 教學視頻:15分鐘16.1 多想多寫多練 49816.2 術業有專攻 49816.3 拆分問題,逐個擊破 50016.4 閱讀Javadoc 50016.5 小結:大練兵馬上開始 50616.6 習題 507第17章 編程常用知識 508 教學視頻:18分鐘17.1 再談對象的比較 50817.1.1 hashcode()方法 50817.1.2 equals()方法 50917.1.3 對象的比較equals()方法 50917.2 Java中的集合類框架 51017.2.1 集合類框架中的接口 51017.2.2 List接口 51117.2.3 使用ArrayList 51217.2.4 Set接口 51617.2.5 使用HashSet類 51717.2.6 List與Set 51817.3 泛型簡介 51817.3.1 沒有泛型時的程序 51917.3.2 使用泛型——避免強制類型轉 52017.4 Map接口 52217.4.1 認識Map 52217.4.2 使用HashMap 52317.5 字符集和編碼 52417.5.1 字符集 52417.5.2 編碼 52517.5.3 關于字符集的小程序 52617.6 小結:編程需要打好基礎 52917.7 習題 530第18章 Java文件編程和Java文件I/O 531 教學視頻:9分鐘18.1 Java中的文件編程 53118.1.1 File類 53118.1.2 創建和刪除文件 53218.1.3 列出文件和文件夾 53318.1.4 重命名文件 53518.2 Java的I/O編程 53618.2.1 理解Java中的Stream 53618.2.2 向文件中寫入數據 53818.2.3 從文件中讀取數據 53918.2.4 從控制臺讀取數據 54118.2.5 使用輸出流寫入數據 54318.2.6 使用輸入流讀取數據 54518.3 小結:Java中的文件類和輸入輸出機制 54618.4 習題 547第19章 Java Socket編程 548 教學視頻:8分鐘19.1 IP地址和端口號 54819.1.1 IP地址——計算機的標識 54819.1.2 端口號——通信的窗口 54919.1.3 網絡,IP地址和端口號 55119.2 Java TCP編程 55119.2.1 數據傳輸協議 55219.2.2 TCP的數據傳輸模式 55219.2.3 第一個TCP小程序 55319.3 Java UDP編程 55719.3.1 UDP的數據傳輸模式 55719.3.2 使用UDP協議收發數據 55819.3.3 TCP和UDP的區別 56019.4 小結:讓程序伸向整個網絡 56119.5 習題 561第20章 Java Swing編程 562 教學視頻:14分鐘20.1 Java Swing編程簡介 56220.1.1 圖形用戶界面編程簡介 56220.1.2 組件 56320.1.3 布局管理器(Layout Manager) 56320.1.4 事件處理(Event Handling) 56420.2 Swing基本組件 56520.2.1 窗口(JFrame) 56520.2.2 Swing的線程 56720.2.3 Swing組件的鼻祖——JComponent 56720.2.4 Swing面板類 56820.2.5 Swing中的標簽 56820.2.6 Swing中的文本框 57020.2.7 Swing中的文本域 57120.2.8 Swing中的組合框 57220.2.9 Swing中的按鈕 57320.3 Swing的布局管理器 57420.3.1 最簡單的FlowLayout 57420.3.2 東南西北中之BorderLayout 57420.3.3 平均分割之——GridLayout 57620.3.4 最強大的布局管理器——GridBagLayout 57720.3.5 使用多個布局管理器 57920.4 Swing的事件處理 58120.4.1 事件的傳遞和封裝 58120.4.2 事件監聽器——事件的處理者 58220.4.3 Swing事件處理的機制 58420.4.4 事件監聽器的編寫 58620.4.5 如何學習更多的事件 58820.5 小結:從此不再依賴控制臺 58820.6 習題 588第21章 編程,需要的是想象力和恒心 589 教學視頻:13分鐘21.1 編程的前奏 58921.1.1 細數手中的積木 58921.1.2 發揮想象力 59021.1.3 確定程序的功能 59121.2 聊天窗口程序 59121.2.1 聊天程序設計 59121.2.2 設計程序運行效果 59321.2.3 UDP消息收發模塊 59521.2.4 圖形用戶界面模塊 59821.2.5 消息處理模塊 60021.2.6 一個更通用的聊天程序 60121.3 小結:編程是必不可少的鍛煉 60221.4 習題 602第22章 JDBC入門 603 教學視頻:11分鐘22.1 JDBC的基本API 60322.1.1 JDBC是什么 60322.1.2 DriverManager——驅動管理器 60522.1.3 Connection接口 60622.1.4 Statement接口 60622.1.5 PreparedStatement接口 60622.1.6 ResultSet接口 60722.1.7 JDBC-ODBC橋 60722.2 一個操作數據庫的簡單程序 60822.2.1 程序的執行結果 60822.2.2 程序設計與模塊劃分 60922.2.3 準備好數據源 61022.2.4 數據庫操作模塊的實現 61022.2.5 圖形用戶界面模塊的實現 61122.3 小結:強大的JDBC標準 61322.4 習題 613????????Java入門1·2·3——一個老鳥的Java學習心得目錄·XX··XXI·