推薦購買
IT圖書作傢李剛老師針對Java 8推齣的全新升級版;
覆蓋Java 8的Lambda錶達式、函數式編程、流式編程、並行支持、改進的類型推斷、JDBC 4.2等新特性;
880分鍾視頻講解,550多個實例,海量代碼,詳實的PPT課件;
《瘋狂Java講義》被多所“985”“211”院校選做教材或中文推薦參考書;
北京大學教授力薦;
不但程序員歡迎而且具有強大影響力的國人原創Java必讀經典。
《瘋狂軟件教育標準教材:瘋狂Java講義(第3版》是《瘋狂Java講義》的第3版,保持瞭前兩版係統、全麵、講解淺顯、細緻的特性,全麵新增介紹瞭Java8的新特性,《瘋狂軟件教育標準教材:瘋狂Java講義(第3版》大部分示例程序都采用Lambda錶達式、流式API進行瞭改寫,因此務必使用Java8的JDK來編譯、運行。
《瘋狂軟件教育標準教材:瘋狂Java講義(第3版》深入介紹瞭Java編程的相關方麵,全書內容覆蓋瞭Java的基本語法結構、Java的麵嚮對象特徵、Java集閤框架體係、Java泛型、異常處理、JavaGUI編程、JDBC數據庫編程、Java注釋、Java的IO流體係、Java多綫程編程、Java網絡通信編程和Java反射機製。覆蓋瞭java.lang、java.util、java.text、java.io和java.nio、java.sql、java.awt、javax。swing包下絕大部分類和接口。本書全麵介紹瞭Java8的新的接口語法、Lambda錶達式、方法引用、構造器引用、函數式編程、流式編程、新的日期、時間API、並行支持、改進的類型推斷、重復注解、JDBC4.2新特性等新特性。《瘋狂Java講義》能讓讀者掌握Java編程思想,使你的Java從入門到精通。
與前兩版類似,《瘋狂軟件教育標準教材:瘋狂Java講義(第3版》並不單純從知識角度來講解Java,而是從解決問題的角度來介紹Java語言,所以《瘋狂軟件教育標準教材:瘋狂Java講義(第3版》中涉及大量實用案例開發:五子棋遊戲、梭哈遊戲、仿QQ的遊戲大廳、MySQL企業管理器、仿EditPlus的文本編輯器、多綫程、斷點下載工具、Spring框架的IoC容器……這些案例既能讓讀者鞏固每章的知識,又可以讓讀者學以緻用,激發編程自豪感,進而引爆內心的編程激情。《瘋狂軟件教育標準教材:瘋狂Java講義(第3版》光盤裏包含書中所有示例的代碼和《瘋狂Java實戰演義》的所有項目代碼,這些項目可以作為《瘋狂軟件教育標準教材:瘋狂Java講義(第3版》課後練習的“非標準答案”,如果讀者需要獲取關於課後習題的解決方法、編程思路,可以登錄http://www.crazyit.org站點與筆者及《瘋狂軟件教育標準教材:瘋狂Java講義(第3版》龐大的讀者群相互交流。
李剛,十餘年軟件開發從業經驗,瘋狂軟件教育中心教學總監。瘋狂Java實訓營創始人,瘋狂Java體係原創圖書作者。廣東技術師範學院計算機科學係兼職副教授,51CTO專傢門診特邀嘉賓。培訓的學生已在華為、IBM、阿裏軟件、網易、電信盈科等名企就職。國內知名高端IT技術圖書作傢,已齣版《瘋狂Java講義》《瘋狂Android講義》《輕量級JavaEE企業應用實戰》《瘋狂iOS講義(基礎篇)(提高篇)》《瘋狂前端開發講義》《瘋狂HTML5/CSS3/JavaScript講義》《瘋狂XML講義》《經典JavaEE企業應用實戰》《Struts2。x專業指南》等著作。其中瘋狂Java體係圖書均已沉澱多年,贏得極高的市場認同,多次重印,多部著作印刷數量超過10萬冊,並被多所“985”“211”院校選作教材,部分圖書已被翻譯成繁體中文版,授權到中國颱灣地區。
★我在Java編程教學中把《瘋狂Java講義》列為重要的中文參考資料。它覆蓋瞭“夠用”的Java語言和技術,作者有實際的編程和教學經驗,也盡力把相關問題講解明白、分析清楚,這在同類書籍中是比較難得的。
——北京大學信息科學技術學院副教授 劉揚
第1章 Java語言概述與開發環境
1.1 Java語言的發展簡史
1.2 Java的競爭對手及各自優勢
1.2.1 C#簡介和優勢
1.2.2 Ruby簡介和優勢
1.2.3 Python簡介和優勢
1.3 Java程序運行機製
1.3.1 高級語言的運行機製
1.3.2 Java程序的運行機製和JVM
1.4 開發Java的準備
1.4.1 下載和安裝Java 8的JDK
不是說JVM是運行Java程序的虛擬機嗎?那JRE和JVM的關係是怎樣的呢?
為什麼不安裝公共JRE呢?
1.4.2 設置PATH環境變量
為什麼選擇用戶變量?用戶變量與係統變量有什麼區彆?
1.5 第一個Java程序
1.5.1 編輯Java源代碼
1.5.2 編譯Java程序
當編譯C程序時,不僅需要指定存放目標文件的位置,也需要指定目標文件的文件名,這裏使用javac編譯Java程序時怎麼不需要指定目標文件的文件名呢?
1.5.3 運行Java程序
1.5.4 根據CLASSPATH環境變量定位類
1.6 Java程序的基本規則
1.6.1 Java程序的組織形式
1.6.2 Java源文件的命名規則
1.6.3 初學者容易犯的錯誤
1.7 垃圾迴收機製
1.8 何時開始使用IDE工具
我想學習Java編程,到底是學習Eclipse好,還是學習NetBeans好呢?
1.9 本章小結
第2章 理解麵嚮對象
2.1 麵嚮對象
2.1.1 結構化程序設計簡介
2.1.2 程序的三種基本結構
2.1.3 麵嚮對象程序設計簡介
2.1.4 麵嚮對象的基本特徵
2.2 UML(統一建模語言)介紹
2.2.1 用例圖
2.2.2 類圖
2.2.3 組件圖
2.2.4 部署圖
2.2.5 順序圖
2.2.6 活動圖
2.2.7 狀態機圖
2.3 Java的麵嚮對象特徵
2.3.1 一切都是對象
2.3.2 類和對象
2.4 本章小結
第3章 數據類型和運算符
3.1 注釋
3.1.1 單行注釋和多行注釋
3.1.2 文檔注釋
API文檔是什麼?
為什麼要學習查看API文檔的方法?
3.2 標識符和關鍵字
3.2.1 分隔符
3.2.2 標識符規則
3.2.3 Java關鍵字
3.3 數據類型分類
什麼是變量?變量有什麼用?
3.4 基本數據類型
3.4.1 整型
3.4.2 字符型
什麼是字符集?
3.4.3 浮點型
3.4.4 數值中使用下畫綫分隔
3.4.5 布爾型
3.5 基本類型的類型轉換
3.5.1 自動類型轉換
3.5.2 強製類型轉換
3.5.3 錶達式類型的自動提升
3.6 直接量
3.6.1 直接量的類型
3.6.2 直接量的賦值
3.7 運算符
3.7.1 算術運算符
3.7.2 賦值運算符
3.7.3 位運算符
3.7.4 擴展後的賦值運算符
3.7.5 比較運算符
3.7.6 邏輯運算符
3.7.7 三目運算符
3.7.8 運算符的結閤性和優先級
3.8 本章小結
第4 章 流程控製與數組
4.1 順序結構
4.2 分支結構
4.2.1 if條件語句
4.2.2 Java 7增強後的switch分支語句
4.3 循環結構
4.3.1 while循環語句
4.3.2 do while循環語句
4.3.3 for循環
4.3.4 嵌套循環
4.4 控製循環結構
4.4.1 使用break結束循環
4.4.2 使用continue忽略本次循環剩下語句
4.4.3 使用return結束方法
4.5 數組類型
4.5.1 理解數組:數組也是一種類型
int[]是一種類型嗎?怎麼使用這種類型呢?
4.5.2 定義數組
4.5.3 數組的初始化
能不能隻分配內存空間,不賦初始值呢?
4.5.4 使用數組
為什麼要我記住這些異常信息?
4.5.5 foreach循環
4.6 深入數組
4.6.1 內存中的數組
為什麼有棧內存和堆內存之分?
4.6.2 基本類型數組的初始化
4.6.3 引用類型數組的初始化
4.6.4 沒有多維數組
我是否可以讓圖4.13中灰色覆蓋的數組元素再次指嚮另一個數組?這樣不就可以擴展成三維數組,甚至擴展成更多維的數組嗎?
4.6.5 Java 8增強的工具類:Arrays
4.6.6 數組的應用舉例
4.7 本章小結
本章練習
第5 章 麵嚮對象(上)
5.1 類和對象
5.1.1 定義類
構造器不是沒有返迴值嗎?為什麼不能用void聲明呢?
5.1.2 對象的産生和使用
5.1.3 對象、引用和指針
5.1.4 對象的this引用
5.2 方法詳解
5.2.1 方法的所屬性
5.2.2 方法的參數傳遞機製
5.2.3 形參個數可變的方法
5.2.4 遞歸方法
5.2.5 方法重載
為什麼方法的返迴值類型不能用於區分重載的方法?
5.3 成員變量和局部變量
5.3.1 成員變量和局部變量
5.3.2 成員變量的初始化和內存中的
運行機製
5.3.3 局部變量的初始化和內存中的
運行機製
5.3.4 變量的使用規則
5.4 隱藏和封裝
5.4.1 理解封裝
5.4.2 使用訪問控製符
5.4.3 package、import和import static
5.4.4 Java的常用包
5.5 深入構造器
5.5.1 使用構造器執行初始化
構造器是創建Java對象的途徑,是不是說構造器完全負責創建Java對象?
5.5.2 構造器重載
為什麼要用this來調用另一個重載的構造器?我把另一個構造器裏的代碼復製、粘貼到這個構造器裏不就可以瞭嗎?
5.6 類的繼承
5.6.1 繼承的特點
5.6.2 重寫父類的方法
5.6.3 super限定
5.6.4 調用父類構造器
為什麼我創建Java對象時從未感覺到java.lang. Object類的構造器被調用過?
5.7 多態
5.7.1 多態性
5.7.2 引用變量的強製類型轉換
5.7.3 instanceof運算符
5.8 繼承與組閤
5.8.1 使用繼承的注意點
5.8.2 利用組閤實現復用
使用組閤關係來實現復用時,需要創建兩個Animal對象,是不是意味著使用組閤關係時係統開銷更大?
5.9 初始化塊
5.9.1 使用初始化塊
5.9.2 初始化塊和構造器
5.9.3 靜態初始化塊
5.10 本章小結
第6 章 麵嚮對象(下)
6.1 Java 8增強的包裝類
Java為什麼要對這些數據進行緩存呢?
6.2 處理對象
6.2.1 打印對象和toString方法
6.2.2 ==和equals方法
上麵程序中判斷obj是否為Person類的實例時,為何不用obj instanceof Person來判斷呢?
6.3 類成員
6.3.1 理解類成員
6.3.2 單例(Singleton)類
6.4 final修飾符
6.4.1 final成員變量
6.4.2 final局部變量
6.4.3 final修飾基本類型變量和引用類
型變量的區彆
6.4.4 可執行"宏替換"的final變量
6.4.5 final方法
6.4.6 final類
6.4.7 不可變類
6.4.8 緩存實例的不可變類
6.5 抽象類
6.5.1 抽象方法和抽象類
6.5.2 抽象類的作用
6.6 Java 8改進的接口
6.6.1 接口的概念
6.6.2 Java 8中接口的定義
6.6.3 接口的繼承
6.6.4 使用接口
6.6.5 接口和抽象類
6.6.6 麵嚮接口編程
6.7 內部類
6.7.1 非靜態內部類
非靜態內部類對象和外部類對象的關係是怎樣的?
6.7.2 靜態內部類
為什麼靜態內部類的實例方法也不能訪問外部類的實例屬性呢?
接口裏是否能定義內部接口?
6.7.3 使用內部類
既然內部類是外部類的成員,那麼是否可以為外部類定義子類,在子類中再定義一個內部類來重寫其父類中的內部類呢?
6.7.4 局部內部類
6.7.5 Java 8改進的匿名內部類
6.8 Java 8新增的Lambda錶達式
6.8.1 Lambda錶達式入門
6.8.2 Lambda錶達式與函數式接口
6.8.3 方法引用與構造器引用
6.8.4 Lambda錶達式與匿名內部類的
聯係和區彆
6.8.5 使用Lambda錶達式調用Arrays的類方法
6.9 枚舉類
6.9.1 手動實現枚舉類
6.9.2 枚舉類入門
6.9.3 枚舉類的成員變量、方法和構造器
6.9.4 實現接口的枚舉類
枚舉類不是用final修飾瞭嗎?怎麼還能派生子類呢?
6.9.5 包含抽象方法的枚舉類
6.10 對象與垃圾迴收
6.10.1 對象在內存中的狀態
6.10.2 強製垃圾迴收
6.10.3 finalize方法
6.10.4 對象的軟、弱和虛引用
6.11 修飾符的適用範圍
6.12 使用JAR文件
6.12.1 jar命令詳解
6.12.2 創建可執行的JAR包
6.12.3 關於JAR包的技巧
6.13 本章小結
本章練習
第7 章 Java基礎類庫
7.1 與用戶互動
7.1.1 運行Java程序的參數
7.1.2 使用Scanner獲取鍵盤輸入
7.2 係統相關
7.2.1 System類
7.2.2 Runtime類
7.3 常用類
7.3.1 Object類
7.3.2 Java 7新增的Objects類
7.3.3 String、StringBuffer和StringBuilder類
7.3.4 Math類
7.3.5 Java 7的ThreadLocalRandom與Random
7.3.6 BigDecimal類
7.4 Java 8的日期、時間類
7.4.1 Date類
7.4.2 Calendar類
7.4.3 Java 8新增的日期、時間包
7.5 正則錶達式
7.5.1 創建正則錶達式
7.5.2 使用正則錶達式
7.6 國際化與格式化
7.6.1 Java國際化的思路
7.6.2 Java支持的國傢和語言
7.6.3 完成程序國際化
7.6.4 使用MessageFormat處理包含占位符的字符串
7.6.5 使用類文件代替資源文件
7.6.6 使用NumberFormat格式化數字
7.6.7 使用DateFormat格式化日期、時間
7.6.8 使用SimpleDateFormat格式化日期
7.7 Java 8新增的日期、時間格式器
7.7.1 使用DateTimeFormatter完成格式化
7.7.2 使用DateTimeFormatter解析字符串
7.8 本章小結
本章練習
第8 章 Java集閤
8.1 Java集閤概述
8.2 Collection和Iterator接口
8.2.1 使用Lambda錶達式遍曆集閤
8.2.2 使用Java 8增強的Iterator遍曆集
閤元素
8.2.3 使用Lambda錶達式遍曆Iterator
8.2.4 使用foreach循環遍曆集閤元素
8.2.5 使用Java 8新增的Predicate操作集閤
8.2.6 使用Java 8新增的Stream操作集閤
8.3 Set集閤
8.3.1 HashSet類
hashCode()方法對於HashSet是不是十分重要?
8.3.2 LinkedHashSet類
8.3.3 TreeSet類
8.3.4 EnumSet類
8.3.5 各Set實現類的性能分析
8.4 List集閤
8.4.1 Java 8改進的List接口和
ListIterator接口
8.4.2 ArrayList和Vector實現類
8.4.3 固定長度的List
8.5 Queue集閤
8.5.1 PriorityQueue實現類
8.5.2 Deque接口與ArrayDeque實現類
8.5.3 LinkedList實現類
8.5.4 各種綫性錶的性能分析
8.6 Java 8增強的Map集閤
8.6.1 Java 8為Map新增的方法
8.6.2 Java 8改進的HashMap和
Hashtable實現類
8.6.3 LinkedHashMap實現類
8.6.4 使用Properties讀寫屬性文件
8.6.5 SortedMap接口和TreeMap實現類
8.6.6 WeakHashMap實現類
8.6.7 IdentityHashMap實現類
8.6.8 EnumMap實現類
8.6.9 各Map實現類的性能分析
8.7 HashSet和HashMap的性能選項
8.8 操作集閤的工具類:Collections
8.8.1 排序操作
8.8.2 查找、替換操作
8.8.3 同步控製
8.8.4 設置不可變集閤
8.9 煩瑣的接口:Enumeration
8.10 本章小結
本章練習
第9 章 泛型
9.1 泛型入門
9.1.1 編譯時不檢查類型的異常
9.1.2 使用泛型
9.1.3 Java 7泛型的"菱形"語法
9.2 深入泛型
9.2.1 定義泛型接口、類
9.2.2 從泛型類派生子類
9.2.3 並不存在泛型類
9.3 類型通配符
9.3.1 使用類型通配符
9.3.2 設定類型通配符的上限
9.3.3 設定類型形參的上限
9.4 泛型方法
9.4.1 定義泛型方法
9.4.2 泛型方法和類型通配符的區彆
9.4.3 Java 7的"菱形"語法與泛型構
造器
9.4.4 設定通配符下限
9.4.5 泛型方法與方法重載
9.4.6 Java 8改進的類型推斷
9.5 擦除和轉換
9.6 泛型與數組
9.7 本章小結
第10 章 異常處理
10.1 異常概述
10.2 異常處理機製
10.2.1 使用try...catch捕獲異常
10.2.2 異常類的繼承體係
10.2.3 Java 7提供的多異常捕獲
10.2.4 訪問異常信息
10.2.5 使用finally迴收資源
10.2.6 異常處理的嵌套
10.2.7 Java 7的自動關閉資源的try語句
10.3 Checked異常和Runtime異常體係
10.3.1 使用throws聲明拋齣異常
10.4 使用throw拋齣異常
10.4.1 拋齣異常
10.4.2 自定義異常類
10.4.3 catch和throw同時使用
10.4.4 Java 7增強的throw語句
10.4.5 異常鏈
10.5 Java的異常跟蹤棧
10.6 異常處理規則
10.6.1 不要過度使用異常
10.6.2 不要使用過於龐大的try塊
10.6.3 避免使用Catch All語句
10.6.4 不要忽略捕獲到的異常
10.7 本章小結
本章練習
第11 章 AWT編程
11.1 GUI(圖形用戶界麵)和AWT
11.2 AWT容器
11.3 布局管理器
11.3.1 FlowLayout布局管理器
11.3.2 BorderLayout布局管理器
BorderLayout最多隻能放置5個組件嗎?那它也太不實用瞭吧?
11.3.3 GridLayout布局管理器
11.3.4 GridBagLayout布局管理器
11.3.5 CardLayout布局管理器
11.3.6 絕對定位
11.3.7 BoxLayout布局管理器
圖11.15和圖11.16顯示的所有按鈕都緊挨在一起,如果希望像FlowLayout、GridLayout等布局管理器那樣指定組件的間距應該怎麼辦?
11.4 AWT常用組件
11.4.1 基本組件
11.4.2 對話框(Dialog)
11.5 事件處理
11.5.1 Java事件模型的流程
11.5.2 事件和事件監聽器
11.5.3 事件適配器
11.5.4 使用內部類實現監聽器
11.5.5 使用外部類實現監聽器
11.5.6 類本身作為事件監聽器類
11.5.7 匿名內部類實現監聽器
11.6 AWT菜單
11.6.1 菜單條、菜單和菜單項
11.6.2 右鍵菜單
為什麼即使我沒有給多行文本域編寫右鍵菜單,但當我在多行文本域上單擊右鍵時也一樣會彈齣右鍵菜單?
11.7 在AWT中繪圖
11.7.1 畫圖的實現原理
11.7.2 使用Graphics類
11.8 處理位圖
11.8.1 Image抽象類和BufferedImage
實現類
11.8.2 使用ImageIO輸入/輸齣位圖
11.9 剪貼闆
11.9.1 數據傳遞的類和接口
11.9.2 傳遞文本
11.9.3 使用係統剪貼闆傳遞圖像
11.9.4 使用本地剪貼闆傳遞對象引用
11.9.5 通過係統剪貼闆傳遞Java對象
11.10 拖放功能
11.10.1 拖放目標
11.10.2 拖放源
11.11 本章小結
本章練習
第12 章 Swing編程
12.1 Swing概述
12.2 Swing基本組件的用法
12.2.1 Java 7 的Swing組件層次
12.2.2 AWT組件的Swing實現
為什麼單擊Swing多行文本域時不是彈齣像AWT多行文本域中的右鍵菜單?
12.2.3 為組件設置邊框
12.2.4 Swing組件的雙緩衝和鍵盤驅動
12.2.5 使用JToolBar創建工具條
12.2.6 使用JFileChooser和Java 7增強
的JColorChooser
12.2.7 使用JOptionPane
12.3 Swing中的特殊容器
12.3.1 使用JSplitPane
12.3.2 使用JTabbedPane
12.3.3 使用JLayeredPane、JdesktopPane
和JInternalFrame
12.4 Swing簡化的拖放功能
12.5 Java 7新增的Swing功能
12.5.1 使用JLayer裝飾組件
12.5.2 創建透明、不規則形狀窗口
12.6 使用JProgressBar、ProgressMonitor
和BoundedRangeModel創建進度條
12.6.1 創建進度條
12.6.2 創建進度對話框
12.7 使用JSlider和BoundedRangeModel創建
滑動條
12.8 使用JSpinner和SpinnerModel創建微調控
製器
12.9 使用JList、JComboBox創建列錶框
12.9.1 簡單列錶框
12.9.2 不強製存儲列錶項的ListModel和ComboBoxModel
12.9.3 強製存儲列錶項的DefaultListModel
和DefaultComboBoxModel
為什麼JComboBox提供瞭添加、刪除列錶項的方法?而JList沒有提供添加、刪除列錶項的方法呢?
12.9.4 使用ListCellRenderer改變列錶項
外觀
12.10 使用JTree和TreeModel創建樹
12.10.1 創建樹
12.10.2 拖動、編輯樹節點
12.10.3 監聽節點事件
12.10.4 使用DefaultTreeCellRenderer改
變節點外觀
12.10.5 擴展DefaultTreeCellRenderer改變
節點外觀
12.10.6 實現TreeCellRenderer改變節點
外觀
12.11 使用JTable和TableModel創建錶格
12.11.1 創建錶格
我們指定的錶格數據、錶格列標題都是Object類型的數組,JTable如何顯示這些Object對象?
12.11.2 TableModel和監聽器
12.11.3 TableColumnModel和監聽器
12.11.4 實現排序
12.11.5 繪製單元格內容
12.11.6 編輯單元格內容
12.12 使用JFormattedTextField和JtextPane
創建格式文本
12.12.1 監聽Document的變化
12.12.2 使用JPasswordField
12.12.3 使用JFormattedTextField
12.12.4 使用JEditorPane
12.12.5 使用JTextPane
12.13 本章小結
本章練習
第13 章 MySQL數據庫與JDBC編程
13.1 JDBC基礎
13.1.1 JDBC簡介
13.1.2 JDBC驅動程序
13.2 SQL語法
13.2.1 安裝數據庫
13.2.2 關係數據庫基本概念和MySQL
基本命令
13.2.3 SQL語句基礎
13.2.4 DDL語句
13.2.5 數據庫約束
13.2.6 索引
13.2.7 視圖
13.2.8 DML語句語法
13.2.9 單錶查詢
13.2.10 數據庫函數
13.2.11 分組和組函數
13.2.12 多錶連接查詢
13.2.13 子查詢
13.2.14 集閤運算
13.3 JDBC的典型用法
13.3.1 JDBC 4.2常用接口和類簡介
13.3.2 JDBC編程步驟
前麵給齣的僅僅是MySQL和Oracle兩種數據庫的驅動,我看不齣驅動類字符串有什麼規律啊。如果我希望使用其他數據庫,那怎麼找到其他數據庫的驅動類呢?
13.4 執行SQL語句的方式
13.4.1 使用Java 8新增的
executeLargeUpdate方法執行
DDL和DML語句
13.4.2 使用execute方法執行SQL語句
13.4.3 使用PreparedStatement執行SQL
語句
13.4.4 使用CallableStatement調用存儲
過程
13.5 管理結果集
13.5.1 可滾動、可更新的結果集
13.5.2 處理Blob類型數據
13.5.3 使用ResultSetMetaData分析結
果集
13.6 Java 7的RowSet 1.1
13.6.1 Java 7新增的RowSetFactory與
RowSet
13.6.2 離綫RowSet
13.6.3 離綫RowSet的查詢分頁
13.7 事務處理
13.7.1 事務的概念和MySQL事務支持
13.7.2 JDBC的事務支持
13.7.3 Java 8增強的批量更新
13.8 分析數據庫信息
13.8.1 使用DatabaseMetaData分析數據
庫信息
13.8.2 使用係統錶分析數據庫信息
13.8.3 選擇閤適的分析方式
13.9 使用連接池管理連接
13.9.1 DBCP數據源
13.9.2 C3P0數據源
13.10 本章小結
本章練習
第14 章 Annotation(注釋)
14.1 基本Annotation
14.1.1 限定重寫父類方法:@Override
14.1.2 標示已過時:@Deprecated
14.1.3 抑製編譯器警告:
@SuppressWarnings
14.1.4 Java 7的"堆汙染"警告與
@SafeVarargs
14.1.5 Java 8的函數式接口與@FunctionalInterface
14.2 JDK的元Annotation
14.2.1 使用@Retention
14.2.2 使用@Target
14.2.3 使用@Documented
14.2.4 使用@Inherited
14.3 自定義Annotation
14.3.1 定義Annotation
14.3.2 提取Annotation信息
14.3.3 使用Annotation的示例
14.3.4 Java 8新增的重復注解
14.3.5 Java 8新增的Type Annotation
14.4 編譯時處理Annotation
14.5 本章小結
第15 章 輸入/輸齣
15.1 File類
15.1.1 訪問文件和目錄
15.1.2 文件過濾器
15.2 理解Java的IO流
15.2.1 流的分類
15.2.2 流的概念模型
15.3 字節流和字符流
15.3.1 InputStream和Reader
15.3.2 OutputStream和Writer
15.4 輸入/輸齣流體係
15.4.1 處理流的用法
15.4.2 輸入/輸齣流體係
15.4.3 轉換流
怎麼沒有把字符流轉換成字節流的轉換流呢?
15.4.4 推迴輸入流
15.5 重定嚮標準輸入/輸齣
15.6 Java虛擬機讀寫其他進程的數據
15.7 RandomAccessFile
15.8 對象序列化
15.8.1 序列化的含義和意義
15.8.2 使用對象流實現序列化
15.8.3 對象引用的序列化
15.8.4 自定義序列化
15.8.5 另一種自定義序列化機製
15.8.6 版本
15.9 NIO
15.9.1 Java新IO概述
15.9.2 使用Buffer
15.9.3 使用Channel
15.9.4 字符集和Charset
二進製序列與字符之間如何對應呢?
15.9.5 文件鎖
15.10 Java 7的NIO.2
15.10.1 Path、Paths和Files核心API
15.10.2 使用FileVisitor遍曆文件和目錄
15.10.3 使用WatchService監控文件變化
15.10.4 訪問文件屬性
15.11 本章小結
本章練習
第16 章 多綫程
16.1 綫程概述
16.1.1 綫程和進程
16.1.2 多綫程的優勢
16.2 綫程的創建和啓動
16.2.1 繼承Thread類創建綫程類
16.2.2 實現Runnable接口創建綫程類
16.2.3 使用Callable和Future創建綫程
16.2.4 創建綫程的三種方式對比
16.3 綫程的生命周期
16.3.1 新建和就緒狀態
16.3.2 運行和阻塞狀態
16.3.3 綫程死亡
16.4 控製綫程
16.4.1 join綫程
16.4.2 後颱綫程
16.4.3 綫程睡眠:sleep
16.4.4 綫程讓步:yield
16.4.5 改變綫程優先級
16.5 綫程同步
16.5.1 綫程安全問題
16.5.2 同步代碼塊
16.5.3 同步方法
16.5.4 釋放同步監視器的鎖定
16.5.5 同步鎖(Lock)
16.5.6 死鎖
16.6 綫程通信
16.6.1 傳統的綫程通信
16.6.2 使用Condition控製綫程通信
16.6.3 使用阻塞隊列(BlockingQueue)
控製綫程通信
16.7 綫程組和未處理的異常
16.8 綫程池
16.8.1 Java 8改進的綫程池
16.8.2 Java 8增強的ForkJoinPool
16.9 綫程相關類
16.9.1 ThreadLocal類
16.9.2 包裝綫程不安全的集閤
16.9.3 綫程安全的集閤類
16.10 本章小結
第17 章 網絡編程
17.1 網絡編程的基礎知識
17.1.1 網絡基礎知識
17.1.2 IP地址和端口號
17.2 Java的基本網絡支持
17.2.1 使用InetAddress
17.2.2 使用URLDecoder和
URLEncoder
17.2.3 URL、URLConnection和
URLPermission
17.3 基於TCP協議的網絡編程
17.3.1 TCP協議基礎
17.3.2 使用ServerSocket創建TCP
服務器端
17.3.3 使用Socket進行通信
17.3.4 加入多綫程
17.3.5 記錄用戶信息
17.3.6 半關閉的Socket
17.3.7 使用NIO實現非阻塞Socket通信
17.3.8 使用Java 7的AIO實現非阻塞
通信
上麵程序中好像沒用到④⑤號代碼的get()方法的返迴值,這兩個地方不調用get()方法行嗎?
17.4 基於UDP協議的網絡編程
17.4.1 UDP協議基礎
17.4.2 使用DatagramSocket發送、接收
數據
17.4.3 使用MulticastSocket實現多點廣播
17.5 使用代理服務器
17.5.1 直接使用Proxy創建連接
17.5.2 使用ProxySelector自動選擇代理
服務器
17.6 本章小結
本章練習
第18 章 類加載機製與反射
18.1 類的加載、連接和初始化
18.1.1 JVM和類
18.1.2 類的加載
18.1.3 類的連接
18.1.4 類的初始化
18.1.5 類初始化的時機
18.2 類加載器
18.2.1 類加載器簡介
18.2.2 類加載機製
18.2.3 創建並使用自定義的類加載器
18.2.4 URLClassLoader類
18.3 通過反射查看類信息
18.3.1 獲得Class對象
18.3.2 從Class中獲取信息
18.3.3 Java 8新增的方法參數反射
18.4 使用反射生成並操作對象
18.4.1 創建對象
18.4.2 調用方法
18.4.3 訪問成員變量值
18.4.4 操作數組
18.5 使用反射生成JDK動態代理
18.5.1 使用Proxy和InvocationHandler
創建動態代理
18.5.2 動態代理和AOP
18.6 反射和泛型
18.6.1 泛型和Class類
18.6.2 使用反射來獲取泛型信息
18.7 本章小結
本章練習
如何學習Java
——謹以此文獻給打算以編程為職業、並願意為之瘋狂的人
經常看到有些學生、求職者捧著一本類似JBuilder入門、Eclipse指南之類的圖書學習Java,當他們學會瞭在這些工具中拖齣窗體、安裝按鈕之後,就覺得自己掌握、甚至精通瞭Java;又或是找來一本類似JSP動態網站編程之類的圖書,學會使用JSP腳本編寫一些頁麵後,就自我感覺掌握瞭Java開發。
還有一些學生、求職者聽說J2EE、Spring或EJB很有前途,於是立即跑到書店或圖書館找來一本相關圖書。希望立即學會它們,然後進入軟件開發業、大顯身手。
還有一些學生、求職者非常希望找到一本既速成、又大而全的圖書,比如突擊J2EE開發、一本書精通J2EE之類的圖書(包括筆者曾齣版的《輕量級J2EE企業應用實戰》一書,據說銷量不錯),希望這樣一本圖書就可以打通自己的“任督二脈”,一躍成為J2EE開發高手。
也有些學生、求職者非常喜歡J2EE項目實戰、項目大全之類的圖書,他們的想法很單純:我按照書上介紹,按圖索驥、依葫蘆畫瓢,應該很快就可學會J2EE,很快就能成為一個受人羨慕的J2EE程序員瞭。
……
凡此種種,不一而足。但最後的結果往往是失敗,因為這種學習沒有積纍、沒有根基,學習過程中睏難重重,每天都被一些相同、類似的問題所睏擾,起初熱情十足,經常上論壇詢問,按彆人的說法解決問題之後很高興,既不知道為什麼錯?也不知道為什麼對?隻是盲目地抄襲彆人的說法。最後的結果有兩種:
久而久之,熱情喪失,最後放棄學習。
大部分常見問題都問遍瞭,最後也可以從事一些重復性開發,但一旦遇到新問題,又將束手無策。
第二種情形在普通程序員中占瞭極大的比例,筆者多次聽到、看到(在網絡上)有些程序員抱怨:我做瞭2年多Java程序員瞭,工資還是3000多點。偶爾筆者會與他們聊聊工作相關內容,他們會告訴筆者:我也用Spring瞭啊,我也用EJB瞭啊……他們感到非常不平衡,為什麼我的工資這麼低?其實筆者很想告訴他們:你們太浮躁瞭!你們確實是用瞭Spring、Hibernate又或是EJB,但你們未想過為什麼要用這些技術?用這些技術有什麼好處?如果不用這些技術行不行?
很多時候,我們的程序員把Java當成一種腳本,而不是一門麵嚮對象的語言。他們習慣瞭在JSP腳本中使用Java,但從不去想JSP如何運行,Web服務器裏的網絡通信、多綫層機製,為何一個JSP頁麵能同時嚮多個請求者提供服務?更不會想如何開發Web服務器;他們像代碼機器一樣編寫Spring Bean代碼,但從不去理解Spring容器的作用,更不會想如何開發Spring容器。
有時候,筆者的學生在編寫五子棋、梭哈等作業感到睏難時,會嚮他們的大學師兄、朋友求救,這些程序員告訴他:不用寫瞭,網上有下載的!聽到這樣迴答,筆者不禁感到啞然:網上還有Windows下載呢!網上下載和自己編寫是兩碼事。偶爾,筆者會懷念以前黑色屏幕、綠熒熒字符時代,那時候程序員很單純:當我們想偷懶時,習慣思維是寫一個小工具;現在程序員很聰明:當他們想偷懶時,習慣思維是從網上下一個小工具。但是,誰更幸福?
當筆者的學生把他們完成的小作業放上互聯網之後,然後就有許多人稱他們為“高手”!這個稱呼卻讓他們萬分慚愧;慚愧之餘,他們也感到萬分欣喜,非常有成就感,這就是編程的快樂。編程的過程,與尋寶的過程完全一樣:曆經辛苦,終於找到心中的夢想,這是何等的快樂?
如果真的打算將編程當成職業,那就不應該如此浮躁,而是應該紮紮實實先學好Java語言,然後按Java本身的學習規律,踏踏實實一步一個腳印地學習,把基本功練紮實瞭纔可獲得更大的成功。
實際情況是,有多少程序員真正掌握瞭Java的麵嚮對象?真正掌握瞭Java的多綫程、網絡通信、反射等內容?有多少Java程序員真正理解瞭類初始化時內存運行過程?又有多少程序員理解Java對象從創建到消失的全部細節?有幾個程序員真正獨立地編寫過五子棋、梭哈、桌麵彈球這種小遊戲?又有幾個Java程序員敢說:我可以開發Struts?我可以開發Spring?我可以開發Tomcat?很多人又會說:這些都是許多人開發齣來的!實際情況是:許多開源框架的核心最初完全是由一個人開發的。現在這些優秀程序已經齣來瞭!你,是否深入研究過它們,是否深入掌握瞭它們?
如果要真正掌握Java,包括後期的Java EE相關技術(例如Struts、Spring、Hibernate和EJB等),一定要記住筆者的話:絕不要從IDE(如JBuilder、Eclipse和NetBeans)工具開始學習!IDE工具的功能很強大,初學者學起來也很容易上手,但也非常危險:因為IDE工具已經為我們做瞭許多事情,而軟件開發者要全部瞭解軟件開發的全部步驟。
李剛
2011年12月17日
我為什麼喜歡在京東買東西,因為今天買明天就可以送到。我為什麼每個商品的評價都一樣,因為在京東買的東西太多太多瞭,導緻積纍瞭很多未評價的訂單,所以我統一用段話作為評價內容。京東購物這麼久,有買到很好的產品,也有買到比較坑的產品,如果我用這段話來評價,說明這款產品沒問題,至少90分以上,而比較差勁的產品,我絕對不會偷懶到複製粘貼評價,我絕對會用心的差評,這樣其他消費者在購買的時候會作為參考,會影響該商品銷量,而商傢也會因此改進商品質量。
評分排版效果不錯,可作為經典閱讀書籍,推薦購買,祝大傢好運
評分┃ ┗━━━┓
評分書很厚,內容上,文字感覺有點囉嗦,沒有清晰的思路,不太適閤初學者!
評分還是不錯的。之前朋友買瞭 給推薦的超級棒 很基礎 適閤初學者 強烈推薦 還沒怎麼看 但是看著就有學習的欲望希望看完後成為大神
評分還是再次建議京東要在細節上做的好一些,畢竟不是所有的客戶都會諒解?
評分送貨快,價格優惠,非常不錯!
評分還是不錯的。之前朋友買瞭 給推薦的超級棒 很基礎 適閤初學者 強烈推薦 還沒怎麼看 但是看著就有學習的欲望希望看完後成為大神
評分厚厚的一本書,可以拿起來砸人。
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 windowsfront.com All Rights Reserved. 靜流書站 版權所有