出版時間:2008-10 出版社:電子工業(yè) 作者:李剛 頁數(shù):889
Tag標(biāo)簽:無
前言
Java語言贏得了前所未有的成功:從2001年到2007年,Java語言一直是世界上應(yīng)用最廣泛的編程語言,因此現(xiàn)在有越來越多的工作者、學(xué)習(xí)者正努力進(jìn)入Java領(lǐng)域或?qū)⒁M(jìn)入Java領(lǐng)域。 為了幫助廣大工作者、學(xué)習(xí)者能真正掌握J(rèn)ava編程,感受到Java語言的魅力,領(lǐng)會到Java編程的快樂,筆者根據(jù)近3年來的Java授課經(jīng)驗,精心編寫了本書。 當(dāng)筆者開始寫作本書之前,已經(jīng)接觸了非常多剛剛畢業(yè)的大學(xué)生,他們告訴筆者:之所以選擇編程,僅僅是想找一份工作。筆者問他們,不喜歡編程嗎?他們回答: 編程有什么樂趣?還不就是寫1 + 2 + 3 + … + 100=?……這樣的程序。于是筆者知道了:他們誤解了程序。于是筆者告訴他們:如果我來上C語言,至少講到可以編寫出一個簡單的游戲外掛,如果再深入一點,可以結(jié)合操作系統(tǒng)理論,編寫一個操作系統(tǒng)的雛形——這才叫寫程序。 程序的作用是:解決問題——如果你的程序不能解決你自己的問題,如何期望你的程序去解決別人的問題呢?那你的程序的價值何在?所以筆者認(rèn)為:最好的學(xué)習(xí)方法就是“案例驅(qū)動”——知道為什么要用這個知識點,才去學(xué)這個知識點,而不是盲目學(xué)習(xí)!因此本書強調(diào)編程實戰(zhàn),強調(diào)以項目激發(fā)編程興趣。
內(nèi)容概要
從2000年至今,Java語言一直是應(yīng)用最廣的開發(fā)語言,并擁有最廣泛的開發(fā)人群。如今,Java已經(jīng)不再簡單地是一門語言,它更像一個完整的體系,一個系統(tǒng)的開發(fā)平臺。更甚至,它被延伸成一種開源精神?! ”緯钊虢榻B了Java編程的相關(guān)方面,全書內(nèi)容覆蓋了Java的基本語法結(jié)構(gòu)、Java的面向?qū)ο筇卣鳌ava集合框架體系、Java泛型、異常處理、Java GUI編程、JDBC數(shù)據(jù)庫編程、Java注釋、Java的IO流體系、Java多線程編程、Java網(wǎng)絡(luò)通信編程和Java反射機制。共覆蓋了java.awt、java.lang、java.io和java.nio、java.sql、java.text、java.util、javax.swing包下絕大部分類和接口?! ”緯⒉粏渭儚闹R角度來講解Java,而是從解決問題的角度來介紹Java語言,所以本書中介紹了大量實用案例開發(fā):五子棋游戲、梭哈游戲、仿QQ的游戲大廳、MySQL企業(yè)管理器、仿EditPlus的文本編輯器、多線程、斷點下載工具、Spring框架的IoC容器……這些案例既能讓讀者鞏固每章的知識,又可以讓讀者學(xué)以致用、激發(fā)編程自豪感,進(jìn)而引爆內(nèi)心的編程激情。本書光盤里包含書中所有示例的代碼,如果讀者希望獲得課后練習(xí)的程序代碼?! ”緯鵀樗写蛩闵钊胝莆認(rèn)ava編程的讀者而編寫,適合各種層次的Java學(xué)習(xí)者和工作者閱讀,也適合作為大學(xué)教育、培訓(xùn)機構(gòu)的Java教材。但如果只是想簡單涉獵Java,則本書過于龐大,不適合閱讀。
作者簡介
李剛從事8年的Java EE應(yīng)用開發(fā)。
曾任LITEON公司的J2EE技術(shù)主管,負(fù)責(zé)該公司的企業(yè)信息平臺的架構(gòu)設(shè)計。
曾任廣州電信、廣東龍泉科技等公司的技術(shù)培訓(xùn)導(dǎo)師。
2007年3月26日的《電腦報》專訪人物。
現(xiàn)任新東方IT培訓(xùn)廣州中心軟件教學(xué)總監(jiān),曾兼任廣東技術(shù)
書籍目錄
第1章 Java概述 1.1 Java語言的發(fā)展簡史 1.2 Java的競爭對手及各自優(yōu)勢 1.2.1 C#簡介和優(yōu)勢 1.2.2 Ruby簡介和優(yōu)勢 1.2.3 Python的簡介和優(yōu)勢 1.3 Java程序運行機制 1.3.1 高級語言的運行機制 1.3.2 Java程序的運行機制和JVM 1.4 開發(fā)Java的準(zhǔn)備 1.4.1 安裝JDK 學(xué)生提問:不是說JVM是運行Java程序的虛擬機嗎?那JRE和JVM的關(guān)系是怎樣的呢? 學(xué)生提問:為什么不安裝公共JRE系統(tǒng)呢? 1.4.2 設(shè)置PATH環(huán)境變量 學(xué)生提問:為什么選擇設(shè)置用戶變量,用戶變量和系統(tǒng)變量有什么區(qū)別呢? 1.5 第一個Java程序 1.5.1 編輯Java源代碼 1.5.2 編譯Java程序 學(xué)生提問:當(dāng)我們使用編譯C程序時,不僅需要指定存放目標(biāo)文件的位置,也需要指定目標(biāo)文件的文件名,這里使用javac編譯Java程序時怎么不需要指定目標(biāo)文件的文件名呢? 1.5.3 運行Java程序 1.5.4 根據(jù)CLASSPATH環(huán)境變量定位類 1.6 Java程序的基本規(guī)則 1.6.1 Java程序的組織形式 1.6.2 Java源文件的命名規(guī)則 1.6.3 初學(xué)者容易犯的錯誤 1.7 垃圾回收機制 1.8 何時開始使用IDE工具 學(xué)生提問:老師,我想學(xué)習(xí)Java編程,到底是學(xué)習(xí)Eclipse好呢,還是學(xué)習(xí)JBuilder好呢? 1.9 本章小結(jié) 本章練習(xí) 第2章 理解面向?qū)ο? 2.1 面向?qū)ο? 2.1.1 結(jié)構(gòu)化程序設(shè)計簡介 2.1.2 程序的三種基本結(jié)構(gòu) 2.1.3 面向?qū)ο蟪绦蛟O(shè)計簡介 2.1.4 面向?qū)ο蟮幕咎卣? 2.2 UML(統(tǒng)一建模語言)介紹 2.2.1 用例圖 2.2.2 類圖 2.2.3 組件圖 2.2.4 部署圖 2.2.5 順序圖 2.2.6 活動圖 2.2.7 狀態(tài)機圖 2.3 Java的面向?qū)ο筇卣? 2.3.1 一切都是對象 2.3.2 類和對象 2.4 本章小結(jié) 第3章 數(shù)據(jù)類型和運算符 3.1 注釋 3.1.1 單行注釋和多行注釋 3.1.2 文檔注釋 學(xué)生提問:API文檔是什么? 學(xué)生提問:為什么要掌握查看API文檔的方法? 3.2 標(biāo)識符和關(guān)鍵字 3.2.1 分隔符 3.2.2 標(biāo)識符規(guī)則 3.2.3 Java關(guān)鍵字 3.3 數(shù)據(jù)類型分類 3.4 基本數(shù)據(jù)類型 3.4.1 整型 3.4.2 字符型 3.4.3 浮點型 3.4.4 布爾型 3.5 基本類型的類型轉(zhuǎn)換 3.5.1 自動類型轉(zhuǎn)換 3.5.2 強制類型轉(zhuǎn)化 3.5.3 表達(dá)式類型的自動提升 3.6 直接量 3.6.1 直接量的類型 3.6.2 直接量的賦值 3.7 運算符 3.7.1 算術(shù)運算符 3.7.2 賦值運算符 3.7.3 位運算符 3.7.4 擴(kuò)展后的賦值運算符 3.7.5 比較運算符 學(xué)生提問:Java為什么要對這些數(shù)據(jù)進(jìn)行緩存呢? 3.7.6 邏輯運算符 3.7.7 三目運算符 3.7.8 運算符的結(jié)合性和優(yōu)先級 3.8 本章小結(jié) 本章練習(xí) 第4章 流程控制和數(shù)組 4.1 順序結(jié)構(gòu) 4.2 分支結(jié)構(gòu) 4.2.1 if條件語句 4.2.2 switch分支語句 4.3 循環(huán)結(jié)構(gòu) 4.3.1 while循環(huán)語句 4.3.2 do while循環(huán)語句 4.3.3 for循環(huán) 4.3.4 嵌套循環(huán) 4.4 控制循環(huán)結(jié)構(gòu) 4.4.1 使用break結(jié)束循環(huán) 4.4.2 使用continue結(jié)束本次循環(huán) 4.4.3 使用return結(jié)束方法 4.5 數(shù)組類型 4.5.1 理解數(shù)組:數(shù)組也是一種類型 學(xué)生提問:int[]是一種類型嗎?怎么使用這種類型呢? 4.5.2 定義數(shù)組 4.5.3 數(shù)組的初始化 學(xué)生提問:能不能只分配內(nèi)存空間,不賦初始值呢? 4.5.4 使用數(shù)組 學(xué)生提問:為什么要我記住這些異常信息? 4.5.5 JDK1.5提供了foreach循環(huán) 4.6 深入數(shù)組 4.6.1 內(nèi)存中的數(shù)組 學(xué)生提問:為什么有棧內(nèi)存和堆內(nèi)存之分? 4.6.2 基本類型數(shù)組的初始化 4.6.3 引用類型數(shù)組的初始化 4.6.4 沒有多維數(shù)組 學(xué)生提問:我是否可以讓圖4.13中灰色覆蓋的數(shù)組元素再次指向另一個數(shù)組?這樣不可以擴(kuò)展成三維數(shù)組嗎?甚至擴(kuò)展到更多維的數(shù)組? 4.6.5 操作數(shù)組的工具類 4.6.6 數(shù)組的應(yīng)用舉例 4.7 本章小結(jié) 本章練習(xí) 第5章 面向?qū)ο螅ㄉ希? 5.1 類和對象 5.1.1 定義類 學(xué)生提問:構(gòu)造器不是沒有返回值嗎?為什么不能用void修飾呢? 5.1.2 對象的產(chǎn)生和使用 5.1.3 對象、引用和指針 5.1.4 對象的this引用 5.2 方法詳解 5.2.1 方法的所屬性 5.2.2 方法的參數(shù)傳遞機制 5.2.3 形參長度可變的方法 5.2.4 遞歸方法 5.2.5 方法重載 學(xué)生提問:為什么方法的返回值類型不能用于區(qū)分重載的方法? 5.3 成員變量和局部變量 5.3.1 成員變量和局部變量 5.3.2 成員變量的初始化和內(nèi)存中的運行機制 5.3.3 局部變量的初始化和內(nèi)存中的運行機制 5.3.4 變量的使用規(guī)則 5.4 隱藏和封裝 5.4.1 理解封裝 5.4.2 使用訪問控制符 5.4.3 package和import 5.4.4 Java的常用包 5.5 深入構(gòu)造器 5.5.1 使用構(gòu)造器執(zhí)行初始化 學(xué)生提問:構(gòu)造器是創(chuàng)建Java對象的途徑,是不是說構(gòu)造器完全負(fù)責(zé)創(chuàng)建Java對象? 5.5.2 構(gòu)造器的重載 學(xué)生提問:為什么要用this來調(diào)用另一個重載的構(gòu)造器?我把另一個構(gòu)造器里的代碼復(fù)制、粘貼到這個構(gòu)造器里不就可以了嗎? 5.6 類的繼承 5.6.1 繼承的特點 5.6.2 重寫父類的方法 5.6.3 父類實例的super引用 學(xué)生提問:我們只是創(chuàng)建了一個Ostrich對象時,哪來的Bird對象? 5.6.4 調(diào)用父類構(gòu)造器 學(xué)生提問:為什么我創(chuàng)建Java對象時從未感覺到j(luò)ava.lang.Object的構(gòu)造器被調(diào)用過? 5.7 多態(tài) 5.7.1 多態(tài)性 5.7.2 引用變量的強制類型轉(zhuǎn)換 5.7.3 instanceof運算符 5.8 繼承與組合 5.8.1 使用繼承的注意點 5.8.2 利用組合實現(xiàn)復(fù)用 學(xué)生提問:使用組合關(guān)系來實現(xiàn)復(fù)用時,需要創(chuàng)建兩個Animal對象,是不是意味著使用組合關(guān)系時系統(tǒng)開銷更大? 5.9 初始化塊 5.9.1 使用初始化塊 5.9.2 初始化塊和構(gòu)造器 5.9.3 靜態(tài)初始化塊 5.10 本章小結(jié) 本章練習(xí) 第6章 面向?qū)ο螅ㄏ拢? 6.1 基本數(shù)據(jù)類型的包裝類 6.2 處理對象 6.2.1 打印對象和toString方法 6.2.2 ==和equals比較運算符 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 不可變類 6.4.5 緩存實例的不可變類 6.5 抽象類 6.5.1 抽象方法和抽象類 6.5.2 抽象類的作用 6.6 更徹底的抽象:接口 6.6.1 接口的概念 6.6.2 接口的定義 6.6.3 接口的繼承 6.6.4 使用接口 6.6.5 接口和抽象類 6.6.6 面向接口編程 6.7 內(nèi)部類 6.7.1 非靜態(tài)內(nèi)部類 學(xué)生提問:非靜態(tài)內(nèi)部類對象和外部類對象的關(guān)系是怎樣的? 6.7.2 靜態(tài)內(nèi)部類 學(xué)生提問:為什么靜態(tài)內(nèi)部類實例方法也不能訪問外部類的實例屬性呢? 學(xué)生提問:接口里是否能定義內(nèi)部接口? 6.7.3 使用內(nèi)部類 學(xué)生提問:既然內(nèi)部類是外部類的成員,是否可以為外部類定義子類,在子類中再定義一個內(nèi)部類來重寫其父類中的內(nèi)部類? 6.7.4 局部內(nèi)部類 6.7.5 匿名內(nèi)部類 6.7.6 閉包(Closure)和回調(diào) 6.8 枚舉類 6.8.1 手動實現(xiàn)枚舉類 6.8.2 枚舉類入門 6.8.3 枚舉類的屬性、方法和構(gòu)造器 6.8.4 實現(xiàn)接口的枚舉類 6.8.5 包含抽象方法的枚舉類 6.9 對象與垃圾回收 6.9.1 對象在內(nèi)存中的狀態(tài) 6.9.2 強制垃圾回收 6.9.3 finalize方法 6.9.4 對象的軟、弱和虛引用 6.10 修飾符的適用范圍 6.11 使用JAR文件 6.11.1 jar命令詳解 6.11.2 創(chuàng)建可執(zhí)行的JAR包 6.11.3 關(guān)于JAR包的技巧 6.12 本章小結(jié) 本章練習(xí) 第7章 Java集合 7.1 Java集合概述 7.2 Collection和Iterator接口 7.2.1 使用Iterator接口遍歷集合元素 7.2.2 使用foreach循環(huán)遍歷集合元素 7.3 Set接口 7.3.1 HashSet類 學(xué)生提問:hashCode方法對于HashSet的作用是什么? 7.3.2 TreeSet類 7.3.3 EnumSet類 7.4 List接口 7.4.1 List接口和ListIterator接口 7.4.2 ArrayList和Vector實現(xiàn)類 7.4.3 固定長度的List 7.5 Queue接口 7.5.1 LinkedList實現(xiàn)類 7.5.2 PriorityQueue實現(xiàn)類 7.6 Map 7.6.1 HashMap和Hashtable實現(xiàn)類 7.6.2 SortedMap接口和TreeMap實現(xiàn)類 7.6.3 WeakHashMap實現(xiàn)類 7.6.4 IdentityHashMap實現(xiàn)類 7.6.5 EnumMap實現(xiàn)類 7.7 HashSet和HashMap的性能選項 7.8 操作集合的工具類:Collections 7.8.1 排序操作 7.8.2 查找,替換操作 7.8.3 同步控制 7.8.4 設(shè)置不可變集合 7.9 煩瑣的接口:Enumeration 7.10 本章小結(jié) 本章練習(xí) 第8章 泛型 8.1 泛型入門 8.1.1 編譯時不檢查類型的異常 8.1.2 手動實現(xiàn)編譯時檢查類型 8.1.3 使用泛型 8.2 深入泛型 8.2.1 定義泛型接口、類 8.2.2 從泛型類派生子類 8.2.3 并不存在泛型類 8.3 類型通配符 8.3.1 使用類型通配符 8.3.2 設(shè)定類型通配符的上限 8.3.3 設(shè)定類型形參的上限 8.4 泛型方法 8.4.1 定義泛型方法 8.4.2 泛型方法和類型通配符的區(qū)別 8.4.3 設(shè)定通配符的下限 8.4.4 泛型方法與方法重載 8.5 擦除和轉(zhuǎn)換 8.6 泛型與數(shù)組 8.7 本章小結(jié) 第9章 與運行環(huán)境交互 9.1 與用戶互動 9.1.1 運行Java程序的參數(shù) 9.1.2 使用Scanner獲取鍵盤輸入 9.1.3 使用BufferedReader獲取鍵盤輸入 9.2 系統(tǒng)相關(guān) 9.2.1 System類 9.2.2 Runtime類 9.3 常用類 9.3.1 Object類 9.3.2 String、StringBuffer和StringBuilder類 9.3.3 Math類 9.3.4 Random類 9.3.5 BigDecimal類 9.4 處理日期的類 9.4.1 Date類 9.4.2 Calendar類 9.4.3 TimeZone類 9.5 正則表達(dá)式 9.5.1 創(chuàng)建正則表達(dá)式 9.5.2 使用正則表達(dá)式 9.6 程序國際化 9.6.1 Java國際化的思路 9.6.2 Java支持的語言和國家 9.6.3 完成程序國際化 9.6.4 使用MessageFormat處理包含占位符的字符串 9.6.5 使用類文件代替資源文件 9.6.6 使用NumberFormat格式化數(shù)字 9.6.7 使用DateFormat格式化日期 9.7 本章小結(jié) 本章練習(xí) 第10章 異常處理 10.1 異常概述 10.2 異常處理機制 10.2.1 使用try...catch捕獲異常 10.2.2 異常類的繼承體系 10.2.3 訪問異常信息 10.2.4 使用finally回收資源 10.2.5 異常處理的嵌套 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 異常鏈 10.5 Java的異常跟蹤棧 10.6 異常處理規(guī)則 10.6.1 不要過度使用異常 10.6.2 不要使用過于龐大的try塊 10.6.3 避免使用Catch All語句 10.6.4 不要忽略捕獲到的異常 10.7 本章小結(jié) 本章練習(xí) 第11章 AWT編程 11.1 GUI(圖形用戶界面)和AWT 11.2 AWT容器 11.3 布局管理器 11.3.1 FlowLayout布局管理器 11.3.2 BorderLayout布局管理器 學(xué)生提問:BorderLayout最多只能放置5個組件嗎?那它還有什么作用? 11.3.3 GridLayout布局管理器 11.3.4 GridBagLayout布局管理器 11.3.5 CardLayout布局管理器 11.3.6 絕對定位 11.3.7 BoxLayout布局管理器 學(xué)生提問:圖11.15和圖11.16顯示的所有按鈕都緊挨在一起,如果希望像FlowLayout、GridLayout等布局管理器指定組件的間距該怎么辦? 11.4 AWT 常用組件 11.4.1 基本組件 11.4.2 對話框 11.5 事件處理 11.5.1 Java事件模型的流程 11.5.2 事件和事件監(jiān)聽器 11.5.3 事件適配器 11.5.4 事件監(jiān)聽器的實現(xiàn)形式 11.6 AWT的菜單 11.6.1 菜單條、菜單和菜單項 11.6.2 右鍵菜單 學(xué)生提問:為什么即使我沒有給多行文本域編寫右鍵菜單,但當(dāng)我在多行文本域上單擊右鍵時一樣會彈出右鍵菜單? 11.7 在AWT中繪圖 11.7.1 畫圖的實現(xiàn)原理 11.7.2 使用Graphics類 11.8 處理位圖 11.8.1 Image抽象類和BufferedImage實現(xiàn)類 11.8.2 使用ImageIO輸入/輸出位圖 11.9 剪貼板 11.9.1 數(shù)據(jù)傳遞的類和接口 11.9.2 傳遞文本 11.9.3 使用系統(tǒng)剪貼板傳遞圖像 11.9.4 使用本地剪貼板來傳遞對象引用 11.9.5 通過系統(tǒng)剪貼板傳遞Java對象 11.10 本章小結(jié) 本章練習(xí) 第12章 Swing編程 12.1 Swing概述 12.2 Swing基本組件的用法 12.2.1 Swing組件層次 12.2.2 AWT組件的Swing實現(xiàn) 學(xué)生提問:為什么單擊Swing多行文本域時不是彈出像AWT多行文本域中的右鍵菜單? 12.2.3 使用JToolBar創(chuàng)建工具條 12.2.4 使用JColorChooser和JFileChooser 12.2.5 使用JOptionPane 12.3 Swing中的特殊容器 12.3.1 使用JSplitPane 12.3.2 使用JTabbedPane 12.3.3 使用JLayeredPane、JDesktopPane和JInternalFrame 12.4 Swing拖放功能 12.4.1 拖放目標(biāo) 12.4.2 拖放源 12.4.3 簡化的拖放操作 12.5 Applet和JApplet 12.5.1 Applet簡介及其安全性 12.5.2 開發(fā)Applet類 12.5.3 使用HTML頁面裝載Applet 12.5.4 appletviewer簡介 12.5.5 Applet的生命周期和動畫機制 學(xué)生提問:程序中重寫paint方法時繪制了一個字符串,但圖12.28上則繪制出了如此之多的字符串,這是為什么呢? 12.5.6 使用Applet創(chuàng)建音樂播放器 12.6 使用JProgressBar、ProgressMonitor和BoundedRangeModel創(chuàng)建進(jìn)度條 12.6.1 創(chuàng)建進(jìn)度條 12.6.2 創(chuàng)建進(jìn)度對話框 12.7 使用JSlider和BoundedRangeModel創(chuàng)建滑動條 12.8 使用JSpinner和SpinnerModel創(chuàng)建微調(diào)控制器 12.9 使用JList、JComboBox創(chuàng)建列表框 12.9.1 簡單列表框 12.9.2 不強制存儲列表項的ListModel和ComboBoxModel 12.9.3 強制存儲列表項的DefaultListModel和DefaultComboBoxModel 學(xué)生提問:為什么JComboBox提供了添加、刪除列表項目的方法?而JList沒有提供添加、刪除列表項的方法呢? 12.9.4 使用ListCellRenderer改變列表項外觀 12.10 使用JTree和TreeModel創(chuàng)建樹 12.10.1 創(chuàng)建樹 12.10.2 拖動、編輯樹節(jié)點 12.10.3 監(jiān)聽節(jié)點事件 12.10.4 使用TreeCellRendering改變節(jié)點外觀 12.11 使用JTable和TableModel創(chuàng)建表格 12.11.1 創(chuàng)建JTable 學(xué)生提問:我們指定的表格數(shù)據(jù)、表格列標(biāo)題都是Object類型的數(shù)組,JTable如何顯示這些Object對象? 12.11.2 TableModel和監(jiān)聽器 12.11.3 TableColumnModel和監(jiān)聽器 12.11.4 實現(xiàn)排序 12.11.5 繪制單元格內(nèi)容 12.11.6 編輯單元格內(nèi)容 12.12 使用JFormattedTextField和JTextPane創(chuàng)建格式文本 12.12.1 監(jiān)聽Document的改變 12.12.2 使用JPasswordField 12.12.3 使用JFormattedTextField 12.12.4 使用JEditorPane 12.12.5 使用JTextPane 12.13 本章小結(jié) 本章練習(xí) 第13章 JDBC編程 13.1 JDBC基礎(chǔ) 13.1.1 JDBC簡介 13.1.2 JDBC驅(qū)動程序類型 13.2 SQL語法介紹 13.2.1 安裝數(shù)據(jù)庫 13.2.2 關(guān)系數(shù)據(jù)庫基本概念和MySQL基本命令 13.2.3 SQL語句基礎(chǔ) 13.2.4 DDL語句 13.2.5 DML語句語法 13.2.6 select語句和SQL函數(shù) 13.2.7 分組和組函數(shù) 13.2.8 多表連接查詢和子查詢 13.3 JDBC的典型用法 13.3.1 JDBC常用接口和類簡介 13.3.2 JDBC編程步驟 學(xué)生提問:前面給出的僅是MySQL和Oracle兩種數(shù)據(jù)庫的驅(qū)動,我看不出驅(qū)動類字符串有什么規(guī)律啊。如果我希望使用其他數(shù)據(jù)庫,我怎么用其他數(shù)據(jù)庫的驅(qū)動類呢? 13.4 執(zhí)行SQL語句的方式 13.4.1 使用executeUpdate執(zhí)行DDL和DML語句 13.4.2 使用execute方法執(zhí)行SQL語句 13.4.3 使用PreparedStatement執(zhí)行SQL語句 13.4.4 使用CallableStatement調(diào)用存儲過程 13.5 管理結(jié)果集 13.5.1 可滾動、可更新的結(jié)果集 13.5.2 處理Blob類型數(shù)據(jù) 13.5.3 使用ResultSetMetaData分析結(jié)果集 13.6 事務(wù)處理 13.6.1 事務(wù)的概念和MySQL事務(wù)支持 13.6.2 JDBC的事務(wù)支持 13.6.3 批量更新 13.7 分析數(shù)據(jù)庫信息 13.7.1 使用DatabaseMetaData分析數(shù)據(jù)庫信息 13.7.2 使用系統(tǒng)表分析數(shù)據(jù)庫信息 13.7.3 選擇合適的分析方式 13.8 使用連接池管理連接 13.9 本章小結(jié) 本章練習(xí) 第14章 Annotation(注釋) 14.1 基本Annotation 14.1.1 限定重寫父類方法:@Override 14.1.2 標(biāo)示已過時:@Deprecated 676 14.1.3 抑制編譯器警告:@SuppressWarnings 14.2 自定義Annotation 14.2.1 定義Annotation 14.2.2 提取Annotation的信息 14.2.3 使用Annotation的例子 14.3 JDK的元Annotation 14.3.1 使用@Retention 14.3.2 使用@Target 14.3.3 使用@Documented 14.3.4 使用@Inherited 14.4 使用APT處理Annotation 14.5 本章小結(jié) 第15章 輸入/輸出 15.1 File類 15.1.1 訪問文件和目錄 15.1.2 文件過濾器 15.2 理解Java的IO流 15.2.1 流的分類 15.2.2 流的概念模型 15.3 字節(jié)流和字符流 15.3.1 InputStream和Reader 15.3.2 OutputStream和Writer 15.4 輸入/輸出流體系 15.4.1 處理流的用法 15.4.2 輸入/輸出流體系 15.4.3 轉(zhuǎn)換流 學(xué)生提問:怎么沒有把字符流轉(zhuǎn)換成字節(jié)流的轉(zhuǎn)換流呢? 15.4.4 推回輸入流 15.5 重定向標(biāo)準(zhǔn)輸入/輸出 15.6 Java虛擬機讀寫其他進(jìn)程的數(shù)據(jù) 15.7 RandomAccessFile 15.8 對象序列化 15.8.1 序列化的含義和意義 15.8.2 使用對象流實現(xiàn)序列化 15.8.3 對象引用的序列化 15.8.4 自定義序列化 15.8.5 另一種自定義序列化機制 15.8.6 版本 15.9 Java新IO 15.9.1 Java新IO概述 15.9.2 使用Buffer 15.9.3 使用Channel 15.9.4 編碼集和Charset 15.9.5 文件鎖 15.10 本章小結(jié) 本章練習(xí) 第16章 多線程 16.1 線程概述 16.1.1 線程和進(jìn)程 16.1.2 多線程的優(yōu)勢 16.2 線程的創(chuàng)建和啟動 16.2.1 繼承Thread類創(chuàng)建線程類 16.2.2 實現(xiàn)Runnable接口創(chuàng)建線程類 16.2.3 兩種方式所創(chuàng)建線程的對比 16.3 線程的生命周期 16.3.1 新建和就緒狀態(tài) 16.3.2 運行和阻塞狀態(tài) 16.3.3 線程死亡 16.4 控制線程 16.4.1 join線程 16.4.2 后臺線程 16.4.3 線程睡眠:sleep 16.4.4 線程讓步:yield 16.4.5 改變線程優(yōu)先級 16.5 線程的同步 16.5.1 線程安全問題 16.5.2 同步代碼塊 16.5.3 同步方法 16.5.4 釋放同步監(jiān)視器的鎖定 16.5.5 同步鎖(Lock) 16.5.6 死鎖 16.6 線程通信 16.6.1 線程的協(xié)調(diào)運行 16.6.2 使用條件變量控制協(xié)調(diào) 16.6.3 使用管道流 16.7 線程組和未處理的異常 16.8 Callable和Future 16.9 線程池 16.10 線程相關(guān)類 16.10.1 ThreadLocal類 16.10.2 包裝線程不安全的集合 16.10.3 線程安全的集合類 16.11 本章小結(jié) 第17章 網(wǎng)絡(luò)編程 17.1 網(wǎng)絡(luò)編程的基礎(chǔ)知識 17.1.1 網(wǎng)絡(luò)基礎(chǔ)知識 17.1.2 IP地址和端口號 17.2 Java的基本網(wǎng)絡(luò)支持 17.2.1 使用InetAddress 17.2.2 使用URLDecoder和URLEncoder 17.2.3 使用URL和URLConnection 17.3 基于TCP協(xié)議的網(wǎng)絡(luò)編程 17.3.1 TCP協(xié)議基礎(chǔ) 17.3.2 使用ServletSocket創(chuàng)建TCP服務(wù)器端 17.3.3 使用Socket進(jìn)行通信 17.3.4 加入多線程 17.3.5 記錄用戶信息 17.3.6 使用NIO實現(xiàn)非阻塞Socket通信 17.4 基于UDP協(xié)議的網(wǎng)絡(luò)編程 17.4.1 UDP協(xié)議基礎(chǔ) 17.4.2 使用DatagramSocket發(fā)送、接收數(shù)據(jù) 17.4.3 使用MulticastSocket實現(xiàn)多點廣播 17.5 使用代理服務(wù)器 17.5.1 直接使用Proxy創(chuàng)建連接 17.5.2 使用ProxySelector選擇代理服務(wù)器 17.6 本章小結(jié) 本章練習(xí) 第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 創(chuàng)建并使用自定義的類加載器 18.2.4 URLClassLoader類 18.3 通過反射查看類信息 18.3.1 獲得Class對象 18.3.2 從Class中獲取信息 18.4 使用反射生成并操作對象 18.4.1 創(chuàng)建對象 18.4.2 調(diào)用方法 18.4.3 訪問屬性值 18.4.4 操作數(shù)組 18.5 使用反射生成JDK動態(tài)代理 18.5.1 使用Proxy和InvocationHandler創(chuàng)建動態(tài)代理 18.5.2 動態(tài)代理和AOP 18.6 反射和泛型 18.6.1 泛型和Class類 18.6.2 使用反射來獲取泛型信息 18.7 本章小結(jié) 本章練習(xí) 上善若水——兼談我的創(chuàng)作理念
章節(jié)摘錄
Java語言歷時12年,已發(fā)展成為人類計算機史上影響深遠(yuǎn)的編程語言,從某種程度上來看,它甚至超出了編程語言的范疇,成為一種開發(fā)平臺,一種開發(fā)規(guī)范。更甚至于:Java己成為一種信仰,Java語言所崇尚的開源、自由等精神,吸引了全世界無數(shù)優(yōu)秀的程序員。事實是,從人類有史以來,從來沒有一門編程語言能吸引這么多的程序員,也沒有一門編程語言能衍生出如此之多的開源框架。 Java語言是一門非常純粹的面向?qū)ο缶幊陶Z言,它吸收了C++語言的各種優(yōu)點,又摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程開發(fā)。 不僅如此,Java語言相關(guān)的Java EE規(guī)范里包含了時下最流行的各種軟件工程理念,各種先進(jìn)的設(shè)計思想總能在Java EE規(guī)范、平臺以及相關(guān)框架里找到相應(yīng)實現(xiàn)。從某種程度上來看,學(xué)精了Java語言的相關(guān)方面,相當(dāng)于系統(tǒng)地學(xué)習(xí)了軟件開發(fā)相關(guān)知識,而不是僅僅學(xué)完了一門編程語言。 時至今日,大部分銀行、電信、證券、電子商務(wù)、電子政務(wù)等系統(tǒng)或者已經(jīng)采用Java EE平臺構(gòu)建,或者正在逐漸過渡到采用Java EE平臺來構(gòu)建,Java EE規(guī)范是目前最成熟的,也是應(yīng)用最廣的企業(yè)級應(yīng)用開發(fā)規(guī)范。
編輯推薦
瘋狂源自夢想,技術(shù)成就輝煌 本書來自作者3年的Java培訓(xùn)經(jīng)歷,凝結(jié)了作者近3000個小時的授課經(jīng)驗,總結(jié)了幾百個Java學(xué)員學(xué)習(xí)過程中的典型錯誤?! ?.案例驅(qū)動,引爆編程激情 本書不再是知識點的鋪陳,而是致力于將知識點融入實際項目的開發(fā),所以書中涉及了大量Java案例:仿QQ的游戲大廳、MySQL企業(yè)管理器、仿EditPlus的文本編輯器、多線程、斷點下載工具……希望讀者通過編寫這些程序找到編程的樂趣。 2.再現(xiàn)李剛老師課堂氛圍 本書的內(nèi)容是筆者近3年授課經(jīng)歷的總結(jié),知識體系取自李剛瘋狂Java實戰(zhàn)課程體系?! ”緯η笤佻F(xiàn)筆者的課堂氛圍:以淺顯比喻代替乏味的講解,以瘋狂實戰(zhàn)代替空洞的理論?! ?.注釋詳細(xì),輕松上手 為了降低讀者閱讀的難度,書中代碼的注釋非常詳細(xì),幾乎每兩行代碼就有一行注釋。不僅如此,本書甚至還把一些簡單理論作為注釋穿插到代碼中,力求讓讀者能輕松上手。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載