出版時(shí)間:2012-1 出版社:電子工業(yè)出版社 作者:李剛 頁數(shù):577
Tag標(biāo)簽:無
前言
前言 2011年7月,Oracle如約發(fā)布了Java 7正式版。接下來筆者對《瘋狂Java講義》進(jìn)行了升級:使用Java 7改寫了全書所有程序,全面介紹了Java 7的各種新特性。 《瘋狂Java講義》面市的近3年時(shí)間內(nèi),得到了廣大讀者的一致好評。筆者也收到了一些關(guān)于《瘋狂Java講義》的建議:有人覺得這本書實(shí)在太大、太厚了;也有讀者建議把《瘋狂Java講義》拆分成上、下冊來出版;針對這些建議,筆者慎重地斟酌了很久:Java經(jīng)過10多年的發(fā)展,已經(jīng)成為世界上應(yīng)用最廣泛的編程語言,而且Java語言的強(qiáng)大是有目共睹的。功能如此豐富、強(qiáng)大,歷史如此悠久的一門編程語言,如果希望通過一本三、四百頁的書能講透,筆者覺得不太現(xiàn)實(shí)。雖然筆者也很希望對《瘋狂Java講義》進(jìn)行精簡,但實(shí)在難以取舍。如果把《瘋狂Java講義》拆分成上、下冊來出版,這種做法會增加讀者的經(jīng)濟(jì)負(fù)擔(dān)(1本書變成了2本書,總價(jià)會高很多)。后來出版社的朋友啟發(fā)說:可以嘗試把《瘋狂Java講義》部分內(nèi)容抽取成“精粹本”;又想到有高校老師反應(yīng):學(xué)校在安排Java課程之前,已經(jīng)安排了數(shù)據(jù)庫開發(fā)相關(guān)課程,《瘋狂Java講義》中關(guān)于SQL、JDBC編程的內(nèi)容有些重復(fù)。出于上面兩種需求,筆者對《瘋狂Java講義》內(nèi)容進(jìn)行了調(diào)整,刪除了部分內(nèi)容,得到這本《瘋狂Java講義精粹》,本書更適合作為高校教材使用?! ≡谝?ldquo;瘋狂Java體系”圖書為教材的瘋狂軟件教育中心(www.fkjava.org)里,經(jīng)常有學(xué)生詢問:為什么叫瘋狂Java這個(gè)名字?也有一些讀者通過網(wǎng)絡(luò)、郵件來詢問這個(gè)問題。其實(shí)這個(gè)問題答案可以在本書第1版的前言中找到。瘋狂的本質(zhì)是一種“享受編程”的狀態(tài)。在一些不了解編程的人看來:編程的人總面對著電腦、在鍵盤上敲打,這種生活實(shí)在太枯燥了,但實(shí)際上是因?yàn)樗麄儾⑽凑嬲私饩幊蹋⑽凑嬲哌M(jìn)編程。在外人眼中:程序員不過是在敲打鍵盤;但在程序員心中:程序員敲出的每個(gè)字符,都是程序的一部分?! 〕绦蚴鞘裁茨??程序是對現(xiàn)實(shí)世界的數(shù)字化模擬。開發(fā)一個(gè)程序,實(shí)際是創(chuàng)造一個(gè)或大或小的“模擬世界”。在這個(gè)過程中,程序員享受著“創(chuàng)造”的樂趣,程序員沉醉在他所創(chuàng)造“模擬世界”里:瘋狂地設(shè)計(jì)、瘋狂地編碼實(shí)現(xiàn)。實(shí)現(xiàn)過程不斷地遇到問題,然后解決它;不斷地發(fā)現(xiàn)程序的缺陷,然后重新設(shè)計(jì)、修復(fù)它——這個(gè)過程本身就是一種享受。一旦完全沉浸到編程世界里,程序員是“物我兩忘”的,眼中看到的、心中想到的,只有他正在創(chuàng)造的“模擬世界”?! ≡趯W(xué)會享受編程之前,編程學(xué)習(xí)者都應(yīng)該采用“案例驅(qū)動”的方式,學(xué)習(xí)者需要明白程序的作用是:解決問題——如果你的程序不能解決你自己的問題,如何期望你的程序去解決別人的問題呢?那你的程序的價(jià)值何在?——知道一個(gè)知識點(diǎn)能解決什么問題,才去學(xué)這個(gè)知識點(diǎn),而不是盲目學(xué)習(xí)!因此本書強(qiáng)調(diào)編程實(shí)戰(zhàn),強(qiáng)調(diào)以項(xiàng)目激發(fā)編程興趣?! H僅只是看完這本書,你不會成為高手!在編程領(lǐng)域里,沒有所謂的“武林秘笈”,再好的書一定要配合大量練習(xí),否則書里的知識依然屬于作者,而讀者則仿佛身入寶山而一無所獲的笨漢。本書配合了大量高強(qiáng)度的練習(xí),希望讀者強(qiáng)迫自己去完成這些項(xiàng)目。這些習(xí)題的答案可以參考本書所附光盤中《瘋狂Java實(shí)戰(zhàn)演義》的配套代碼。如果需要獲得編程思路和交流,可以登錄http://www.crazyit.org與廣大讀者和筆者交流?! ”緯惺裁刺攸c(diǎn) 本書是《瘋狂Java講義》的精粹版,本書并不是一本簡單的Java入門教材。本書的內(nèi)容完全取自《瘋狂Java講義》,只是刪減了原書中關(guān)于SQL、JDBC編程,以及Java圖形界面編程的相關(guān)內(nèi)容?! ∫虼?,本書具有如下三個(gè)特點(diǎn)?! ?.闡述透徹、原理清晰 本書并不是簡單地羅列Java語法規(guī)則,而是盡量從語法設(shè)計(jì)者的角度向讀者解釋每個(gè)語法規(guī)則的作用、緣由;本書力求從運(yùn)行機(jī)制來解釋代碼的運(yùn)行過程,從內(nèi)存分配的細(xì)節(jié)上剖析程序的運(yùn)行細(xì)節(jié)。閱讀本書不僅要求讀者知道怎么做,而且要求讀者能理解“為什么這么做”?! ?.再現(xiàn)李剛老師課堂氛圍 本書的內(nèi)容是筆者6年多授課經(jīng)歷的總結(jié),知識體系取自瘋狂Java實(shí)戰(zhàn)的課程體系?! ”緯η笤佻F(xiàn)筆者的課堂氛圍:以淺顯比喻代替乏味的講解,以瘋狂實(shí)戰(zhàn)代替空洞的理論?! 邪舜罅?ldquo;注意”、“學(xué)生提問”部分,這些正是上千個(gè)Java學(xué)員所犯錯(cuò)誤的匯總?! ?.注釋詳細(xì),輕松上手 為了降低讀者閱讀的難度,書中代碼的注釋非常詳細(xì),幾乎每兩行代碼就有一行注釋。不僅如此,本書甚至還把一些簡單理論作為注釋穿插到代碼中,力求讓讀者能輕松上手。 本書所有程序中關(guān)鍵代碼以粗體字標(biāo)出,也是為了幫助讀者能迅速找到這些程序的關(guān)鍵點(diǎn)?! ”緯鴮懡o誰看 如果你僅僅想對Java有所涉獵,那么本書并不適合你;如果你想全面掌握J(rèn)ava語言,并使用Java來解決問題、開發(fā)項(xiàng)目,或者希望以Java編程作為你的職業(yè),那么本書將非常適合你。希望本書能引爆你內(nèi)心潛在的編程激情,如果本書能讓你產(chǎn)生廢寢忘食的感覺,那筆者就非常欣慰了。 2011-12-17
內(nèi)容概要
《瘋狂Java講義精粹(含CD光盤1張)》是《瘋狂Java講義》的精粹版, 本書同樣保留了《瘋狂Java講義》的特性:
本書基于Java 7完成,全面介紹了Java 7的新特性。
本書刪除了《瘋狂Java講義》中關(guān)于圖形界面編程、數(shù)據(jù)庫編程的內(nèi)容,保留了Java的基本語法結(jié)構(gòu)、Java的面向?qū)ο筇卣?、Java集合框架體系、Java泛型、異常處理、Java注釋、Java的IO流體系、Java多線程編程、Java網(wǎng)絡(luò)通信編程和Java反射機(jī)制的內(nèi)容?!?br />本書的這種調(diào)整一方面是為了對《瘋狂Java講義》進(jìn)行精簡,另一方面也是應(yīng)廣大高校老師的反饋:高校課程前期已經(jīng)講授過數(shù)據(jù)庫相關(guān)內(nèi)容,因此
本書刪除了相關(guān)內(nèi)容?!?本書的寫作是基于Java 7完成的,全面介紹了Java
7的二進(jìn)制整數(shù)、菱形語法、增強(qiáng)switch語句、多異常捕獲、自動關(guān)閉資源的try語句、JDBC
4.1新特性、NIO.2、AIO等新特性。
本書光盤里包含書中所有示例的代碼和《瘋狂Java實(shí)戰(zhàn)演義》的所有項(xiàng)目代碼。但由于
本書并未包含Java圖形界面編程的相關(guān)知識,因此讀者在閱讀帶圖形界面的項(xiàng)目代碼時(shí)可能有一定困難,此時(shí)讀者可以參考《瘋狂Java講義》的相關(guān)內(nèi)容,也可以登錄http://www.crazyit.org站點(diǎn)與筆者及
本書龐大的讀者群相互交流。
作者簡介
李剛,從事10多年的JavaEE應(yīng)用開發(fā),現(xiàn)任瘋狂軟件教育中心教學(xué)總監(jiān),瘋狂Java實(shí)訓(xùn)營創(chuàng)始人,瘋狂Java體系圖書作者,曾任LITEON公司的j2EE技術(shù)主管,負(fù)責(zé)該公司的企業(yè)信息化平臺的架構(gòu)設(shè)計(jì),曾任廣州電信、廣東龍泉科技等公司的技術(shù)培訓(xùn)導(dǎo)師,曾兼任廣東技術(shù)師范學(xué)院計(jì)算機(jī)科學(xué)系的兼職副教授,2007年3月26日的{電腦報(bào)}專訪人物,培訓(xùn)的學(xué)生已在華為、立信、普信、網(wǎng)易、電信盈科等公司就職,國內(nèi)著名的高端IT技術(shù)作家,已出版《瘋狂Java講義》、《瘋狂Android講義》、《輕量級JavaEE企業(yè)應(yīng)用實(shí)戰(zhàn)》、《瘋狂Jjax講義》、《瘋狂XML講義》、《經(jīng)典JavaEE企業(yè)應(yīng)用實(shí)戰(zhàn)》、《Struts2.1權(quán)威指南》、《Ruby On Rails敏捷開發(fā)最佳實(shí)踐》等著作。其中瘋狂Java體系圖書都是已經(jīng)得到廣泛的市場認(rèn)同,并多次重印的暢銷圖書,并被多家高校選作教材,部分圖書已被翻譯成繁體中文版、輸出到臺灣地區(qū)。
書籍目錄
第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程序運(yùn)行機(jī)制
1.3.1 高級語言的運(yùn)行機(jī)制
1.3.2 Java程序的運(yùn)行機(jī)制和JVM
1.4 開發(fā)Java的準(zhǔn)備
1.4.1 下載和安裝Java 的JDK
不是說JVM是運(yùn)行Java程序的虛擬機(jī)嗎?那JRE和JVM的關(guān)系是怎樣的呢?
為什么不安裝公共JRE呢?
1.4.2 設(shè)置PATH環(huán)境變量
為什么選擇用戶變量?用戶變量與系統(tǒng)變量有什么區(qū)別?
1.5 第一個(gè)Java程序
1.5.1 編輯Java源代碼
1.5.2 編譯Java程序
當(dāng)我們編譯C程序時(shí),不僅需要指定存放目標(biāo)文件的位置,也需要指定目標(biāo)文件的文件名,這里使用javac編譯Java程序時(shí)怎么不需要指定目標(biāo)文件的文件名呢?
1.5.3 運(yùn)行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é)者容易犯的錯(cuò)誤
1.7 垃圾回收機(jī)制
1.8 何時(shí)開始使用IDE工具
我想學(xué)習(xí)Java編程,到底是學(xué)習(xí)Eclipse好呢,還是學(xué)習(xí)NetBeans好呢?
1.9 本章小結(jié)
本章練習(xí)
第2章 數(shù)據(jù)類型和運(yùn)算符
2.1 注釋
2.1.1 單行注釋和多行注釋
2.1.2 文檔注釋
API文檔是什么?
為什么要掌握查看API文檔的方法?
2.2 標(biāo)識符和關(guān)鍵字
2.2.1 分隔符
2.2.2 標(biāo)識符規(guī)則
2.2.3 Java關(guān)鍵字
2.3 數(shù)據(jù)類型分類
2.4 基本數(shù)據(jù)類型
2.4.1 整型
2.4.2 Java 新增的二進(jìn)制整數(shù)
2.4.3 字符型
2.4.4 浮點(diǎn)型
2.4.5 Java 新增的數(shù)值中使用
下畫線分隔
2.4.6 布爾型
2.5 基本類型的類型轉(zhuǎn)換
2.5.1 自動類型轉(zhuǎn)換
2.5.2 強(qiáng)制類型轉(zhuǎn)換
2.5.3 表達(dá)式類型的自動提升
2.6 直接量
2.6.1 直接量的類型
2.6.2 直接量的賦值
2.7 運(yùn)算符
2.7.1 算術(shù)運(yùn)算符
2.7.2 賦值運(yùn)算符
2.7.3 位運(yùn)算符 3
2.7.4 擴(kuò)展后的賦值運(yùn)算符
2.7.5 比較運(yùn)算符
2.7.6 邏輯運(yùn)算符
2.7.7 三目運(yùn)算符
2.7.8 運(yùn)算符的結(jié)合性和優(yōu)先級
2.8 本章小結(jié)
本章練習(xí)
第3章 流程控制與數(shù)組
3.1 順序結(jié)構(gòu)
3.2 分支結(jié)構(gòu)
3.2.1 if條件語句
3.2.2 Java 的switch分支語句
3.3 循環(huán)結(jié)構(gòu)
3.3.1 while循環(huán)語句
3.3.2 do while循環(huán)語句
3.3.3 for循環(huán)
3.3.4 嵌套循環(huán)
3.4 控制循環(huán)結(jié)構(gòu)
3.4.1 使用break結(jié)束循環(huán)
3.4.2 使用continue結(jié)束本次循環(huán)
3.4.3 使用return結(jié)束方法
3.5 數(shù)組類型
3.5.1 理解數(shù)組:數(shù)組也是一種類型
int[]是一種類型嗎?怎么使用這種類型呢?
3.5.2 定義數(shù)組
3.5.3 數(shù)組的初始化
能不能只分配內(nèi)存空間,不賦初始值呢?
3.5.4 使用數(shù)組
為什么要我記住這些異常信息?
3.5.5 foreach循環(huán)
3.6 深入數(shù)組
3.6.1 內(nèi)存中的數(shù)組
為什么有棧內(nèi)存和堆內(nèi)存之分?
3.6.2 基本類型數(shù)組的初始化
3.6.3 引用類型數(shù)組的初始化
3.6.4 沒有多維數(shù)組
我是否可以讓圖3.13中灰色覆蓋的數(shù)組元素再次指向另一個(gè)數(shù)組?這樣不就可以擴(kuò)展成三維數(shù)組嗎?甚至擴(kuò)展成更多維的數(shù)組?
3.6.5 操作數(shù)組的工具類
3.6.6 數(shù)組的應(yīng)用舉例
3.7 本章小結(jié)
本章練習(xí)
第4章 面向?qū)ο螅ㄉ希?br />4.1 類和對象
4.1.1 定義類
構(gòu)造器不是沒有返回值嗎?為什么不能用void修飾呢?
4.1.2 對象的產(chǎn)生和使用
4.1.3 對象、引用和指針
4.1.4 對象的this引用
4.2 方法詳解
4.2.1 方法的所屬性
4.2.2 方法的參數(shù)傳遞機(jī)制
4.2.3 形參個(gè)數(shù)可變的方法
4.2.4 遞歸方法
4.2.5 方法重載
為什么方法的返回值類型不能用于區(qū)分重載的方法?
4.3 成員變量和局部變量
4.3.1 成員變量和局部變量
4.3.2 成員變量的初始化和內(nèi)存中的運(yùn)行機(jī)制
4.3.3 局部變量的初始化和內(nèi)存中的運(yùn)行機(jī)制
4.3.4 變量的使用規(guī)則
4.4 隱藏和封裝
4.4.1 理解封裝
4.4.2 使用訪問控制符
4.4.3 package、import和import static
4.4.4 Java的常用包
4.5 深入構(gòu)造器
4.5.1 使用構(gòu)造器執(zhí)行初始化
構(gòu)造器是創(chuàng)建Java對象的途徑,是不是說構(gòu)造器完全負(fù)責(zé)創(chuàng)建Java對象?
4.5.2 構(gòu)造器重載
為什么要用this來調(diào)用另一個(gè)重載的構(gòu)造器?我把另一個(gè)構(gòu)造器里的代碼復(fù)制、粘貼到這個(gè)構(gòu)造器里不就可以了嗎?
4.6 類的繼承
4.6.1 繼承的特點(diǎn)
4.6.2 重寫父類的方法
4.6.3 super限定
4.6.4 調(diào)用父類構(gòu)造器
為什么我創(chuàng)建Java對象時(shí)從未感覺到j(luò)ava.lang. Object類的構(gòu)造器被調(diào)用過?
4.7 多態(tài)
4.7.1 多態(tài)性
4.7.2 引用變量的強(qiáng)制類型轉(zhuǎn)換
4.7.3 instanceof運(yùn)算符
4.8 繼承與組合
4.8.1 使用繼承的注意點(diǎn)
4.8.2 利用組合實(shí)現(xiàn)復(fù)用
使用組合關(guān)系來實(shí)現(xiàn)復(fù)用時(shí),需要?jiǎng)?chuàng)建兩個(gè)Animal對象,是不是意味著使用組合關(guān)系時(shí)系統(tǒng)開銷更大?
4.9 初始化塊
4.9.1 使用初始化塊
4.9.2 初始化塊和構(gòu)造器
4.9.3 靜態(tài)初始化塊
4.10 本章小結(jié)
本章練習(xí)
第5章 面向?qū)ο螅ㄏ拢?br />5.1 Java 增強(qiáng)的包裝類
Java為什么要對這些數(shù)據(jù)進(jìn)行緩存呢?
5.2 處理對象
5.2.1 打印對象和toString
方法
5.2.2 ==和equals方法
判斷obj是否為Person類的實(shí)例時(shí),為何不用obj instanceof Person來判斷呢?
5.3 類成員
5.3.1 理解類成員
5.3.2 單例(Singleton)類
5.4 final修飾符
5.4.1 final成員變量
5.4.2 final局部變量
5.4.3 final修飾基本類型變量和
引用類型變量的區(qū)別
5.4.4 可執(zhí)行“宏替換”的final
變量
5.4.5 final方法
5.4.6 final類
5.4.7 不可變類
5.4.8 緩存實(shí)例的不可變類
5.5 抽象類
5.5.1 抽象方法和抽象類
5.5.2 抽象類的作用
5.6 更徹底的抽象:接口
5.6.1 接口的概念
5.6.2 接口的定義
5.6.3 接口的繼承
5.6.4 使用接口
5.6.5 接口和抽象類
5.6.6 面向接口編程
5.7 內(nèi)部類
5.7.1 非靜態(tài)內(nèi)部類
非靜態(tài)內(nèi)部類對象和外部類對象的關(guān)系是怎樣的?
5.7.2 靜態(tài)內(nèi)部類
為什么靜態(tài)內(nèi)部類的實(shí)例方法也不能訪問外部類的實(shí)例屬性呢?
接口里是否能定義內(nèi)部接口?
5.7.3 使用內(nèi)部類
既然內(nèi)部類是外部類的成員,那么是否可以為外部類定義子類,在子類中再定義一個(gè)內(nèi)部類來重寫其父類中的內(nèi)部類?
5.7.4 局部內(nèi)部類
5.7.5 匿名內(nèi)部類 1
5.7.6 閉包(Closure)和回調(diào)
5.8 枚舉類
5.8.1 手動實(shí)現(xiàn)枚舉類
5.8.2 枚舉類入門
5.8.3 枚舉類的Field、方法和
構(gòu)造器
5.8.4 實(shí)現(xiàn)接口的枚舉類
枚舉類不是用final修飾了嗎?怎么還能派生子類呢?
5.8.5 包含抽象方法的枚舉類
5.9 對象與垃圾回收
5.9.1 對象在內(nèi)存中的狀態(tài)
5.9.2 強(qiáng)制垃圾回收
章節(jié)摘錄
版權(quán)頁:插圖:方法重載和方法重寫在英語中分別是overload和override,經(jīng)??吹接行┏鯇W(xué)者或一些低水平的公司喜歡詢問重載和重寫的區(qū)別?其實(shí)把重載和重寫放在一起比較本身沒有太大的意義,因?yàn)橹剌d主要發(fā)生在同一個(gè)類的多個(gè)同名方法之間,而重寫發(fā)生在子類和父類的同名方法之間。它們之間的聯(lián)系很少,除了二者都是發(fā)生在方法之間,并要求方法名相同之外,沒有太大的相似之處。當(dāng)然,父類方法和子類方法之間也可能發(fā)生重載,因?yàn)樽宇悤@得父類方法,如果子類定義了一個(gè)與父類方法有相同的方法名,但參數(shù)列表不同的方法,就會形成父類方法和子類方法的重載。
編輯推薦
《瘋狂Java講義精粹》來自作者6年的Java培訓(xùn)經(jīng)歷,凝結(jié)了作者近6000小時(shí)的授課經(jīng)驗(yàn),總結(jié)了上千個(gè)Java學(xué)員學(xué)習(xí)過程中的典型錯(cuò)誤,1.案例驅(qū)動,引爆編程激情《瘋狂Java講義精粹》不再是知識點(diǎn)的鋪陳,而是致力于將知識點(diǎn)融入實(shí)際項(xiàng)目的開發(fā),所以書中涉及了大量Java案例:仿QQ的游戲大廳、MysQL企業(yè)管理器、仿EditPlus的文本編輯器、多線程、斷點(diǎn)下載工具……希望讀者通過編寫這些程序找到編程的樂趣。2.再現(xiàn)李剛老師課堂氛圍《瘋狂Java講義精粹》的內(nèi)容是筆者近6年授課經(jīng)歷的總結(jié),知識體系取自李剛瘋狂Java實(shí)戰(zhàn)課程體系,《瘋狂Java講義精粹》力求再現(xiàn)筆者的課堂氛圍:以淺顯比喻代替乏味的講解,以瘋狂實(shí)戰(zhàn)代替空洞的理論,3.注釋詳細(xì),輕松上手為了降低讀者閱讀的難度,書中代碼的注釋非常詳細(xì),幾乎每兩行代碼就有一行注釋。不僅如此,《瘋狂Java講義精粹》甚至還把一些簡單理論作為注釋穿插到代碼中,力求讓讀者能輕松上手。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載