本書是《瘋狂Java講義精粹》的第2版,本書相比《瘋狂Java講義》更淺顯易懂,講解更細(xì)致,本書同樣介紹了Java 8的新特性,本書大部分示例程序都采用Lambda表達(dá)式、流式API進(jìn)行了改寫,因此務(wù)必使用Java 8的JDK來編譯、運(yùn)行。
本書盡量淺顯、直白地介紹Java編程的相關(guān)方面,全書內(nèi)容覆蓋了Java的基本語法結(jié)構(gòu)、Java的面向?qū)ο筇卣、Java集合框架體系、Java泛型、異常處理、Java注釋、Java的IO流體系、Java多線程編程、Java網(wǎng)絡(luò)通信編程。覆蓋了java.lang、java.util、java.text、java.io和java.nio包下絕大部分類和接口。本書全面介紹了Java 8的新的接口語法、Lambda表達(dá)式、方法引用、構(gòu)造器引用、函數(shù)式編程、流式編程、新的日期、時間API、并行支持、改進(jìn)的類型推斷、重復(fù)注解、JDBC 4.2新特性等新特性。
以充滿Java編程思想和智慧的《瘋狂Java講義(第3版)》為藍(lán)本,根據(jù)院校教學(xué)特點(diǎn)粹取精華,幫助讀者在短時間內(nèi)快速掌握J(rèn)ava編程語言; 國內(nèi)知名IT圖書作家、國家級獎項得主李剛老師針對Java 8推出的全新升級版; 覆蓋Java 8的Lambda表達(dá)式、函數(shù)式編程、流式編程、并行支持、改進(jìn)的類型推斷、JDBC 4.2等新特性; 800分鐘以上視頻講解,海量面試題及答案,數(shù)百個書中實(shí)例及詳實(shí)課件,輔助教師提高備課效率; 光盤中附贈《瘋狂Workflow講義》作者楊恩雄老師親自編寫、制作的《Java設(shè)計模式(瘋狂Java聯(lián)盟版)》電子書; 額外附贈經(jīng)典Java開發(fā)實(shí)例,有助于完成課后習(xí)題及獨(dú)立開發(fā)完整項目; 《瘋狂Java講義》系列圖書曾被多所“985”“211”院校選做教材或中文推薦參考書。
李剛,十多年軟件行業(yè)開發(fā)從業(yè)經(jīng)驗(yàn),瘋狂軟件教育中心教學(xué)總監(jiān)。
瘋狂Java實(shí)訓(xùn)營創(chuàng)始人,瘋狂Java體系原創(chuàng)圖書作者。
廣東技術(shù)師范學(xué)院計算機(jī)科學(xué)系兼職副教授,51CTO專家門診特邀嘉賓。
培訓(xùn)的學(xué)生已在華為、IBM、阿里軟件、網(wǎng)易、電信盈科等名企就職。
國內(nèi)著名高端IT技術(shù)作家,已出版《瘋狂Java講義》《瘋狂Android講義》《輕量級Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)》《瘋狂iOS講義》《瘋狂Ajax講義》《瘋狂XML講義》《經(jīng)典Java EE企業(yè)應(yīng)用實(shí)戰(zhàn)》《瘋狂HTML 5/CSS 3/JavaScript講義》《Struts 2.x權(quán)威指南》等著作。其中瘋狂Java體系圖書經(jīng)多年沉淀,贏得極高的市場認(rèn)同,多次重印成為超級暢銷書,并被多所“985”“211”院校選作教材。部分圖書已被翻譯成繁體中文版,授權(quán)到臺灣地區(qū)。
第1章 java語言概述與開發(fā)環(huán)境
1.1 java語言的發(fā)展簡史
1.2 java程序運(yùn)行機(jī)制
1.2.1 高級語言的運(yùn)行機(jī)制
1.2.2 java程序的運(yùn)行機(jī)制和
1.3 開發(fā)java的準(zhǔn)備
1.3.1 下載和安裝java 8的
不是說jvm是運(yùn)行java程序的虛擬機(jī)嗎?那jre和jvm的關(guān)系是怎樣的呢?
1.3.2 設(shè)置path環(huán)境變量
為什么不安裝公共jre呢?
為什么選擇用戶變量?用戶變量與系統(tǒng)變量有什么區(qū)別?
1.4 第一個java程序
1.4.1 編輯java源代碼
1.4.2 編譯java程序
當(dāng)編譯c程序時,不僅需要指定存放目標(biāo)文件的位置,也需要指定目標(biāo)文件的文件名,這里使用javac編譯java程序時怎么不需要指定目標(biāo)文件的文件名呢? 第1章 java語言概述與開發(fā)環(huán)境
1.1 java語言的發(fā)展簡史
1.2 java程序運(yùn)行機(jī)制
1.2.1 高級語言的運(yùn)行機(jī)制
1.2.2 java程序的運(yùn)行機(jī)制和
1.3 開發(fā)java的準(zhǔn)備
1.3.1 下載和安裝java 8的
不是說jvm是運(yùn)行java程序的虛擬機(jī)嗎?那jre和jvm的關(guān)系是怎樣的呢?
1.3.2 設(shè)置path環(huán)境變量
為什么不安裝公共jre呢?
為什么選擇用戶變量?用戶變量與系統(tǒng)變量有什么區(qū)別?
1.4 第一個java程序
1.4.1 編輯java源代碼
1.4.2 編譯java程序
當(dāng)編譯c程序時,不僅需要指定存放目標(biāo)文件的位置,也需要指定目標(biāo)文件的文件名,這里使用javac編譯java程序時怎么不需要指定目標(biāo)文件的文件名呢?
1.4.3 運(yùn)行java程序
1.4.4 根據(jù)classpath環(huán)境變量定位類
1.5 java程序的基本規(guī)則
1.5.1 java程序的組織形式
1.5.2 java源文件的命名規(guī)則
1.5.3 初學(xué)者容易犯的錯誤
1.6 何時開始使用ide工具
我想學(xué)習(xí)java編程,到底是學(xué)習(xí)eclipse好,還是學(xué)習(xí)netbeans好呢?
1.7 本章小結(jié)
本章練習(xí)
第2章 數(shù)據(jù)類型和運(yùn)算符
2.1 注釋
2.1.1 單行注釋和多行注釋
2.1.2 文檔注釋
api文檔是什么
為什么要學(xué)習(xí)查看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 字符型
什么是字符集?
2.4.3 浮點(diǎn)型
2.4.4 數(shù)值中使用下畫線分隔
2.4.5 布爾型
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)算符
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 增強(qiáng)后的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忽略本次循環(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 沒有多維數(shù)組
……
第4章 面向?qū)ο螅ㄉ希?br />第5章 面向?qū)ο螅ㄏ拢?br />第6章 java基礎(chǔ)類庫
第7章 java集合
第8章 泛型
第9章 異常處理
第10章 annotation(注解)
第11章 輸入/輸出
第12章 多線程
第13章 網(wǎng)絡(luò)編程
前 言
2014年3月18日,Oracle發(fā)布了Java 8正式版。Java 8是自Java 5以來最重要的版本更新,Java 8引入了大量新特性——重新設(shè)計的接口語法、Lambda表達(dá)式、方法引用、構(gòu)造器引用、函數(shù)式編程、流式編程、新的日期、時間API等,這些新特性進(jìn)一步增強(qiáng)了Java語言的功能。
為了向廣大工作者、學(xué)習(xí)者介紹最新、最前沿的Java知識,在Java 8正式發(fā)布之前,筆者已經(jīng)深入研究過Java 8絕大部分可能新增的功能;當(dāng)Java 8正式發(fā)布之后,筆者在第一時間開始了《瘋狂Java講義精粹版》的升級:使用Java 8改寫了全書所有程序,全面介紹了Java 8的各種新特性。
在以“瘋狂Java體系”圖書為教材的瘋狂軟件教育中心(www.fkjava.org),經(jīng)常有學(xué)生詢問:為什么叫瘋狂Java這個名字?也有一些讀者通過網(wǎng)絡(luò)、郵件來詢問這個問題。其實(shí)這個問題的答案可以在本書第1版的前言中找到。瘋狂的本質(zhì)是一種“享受編程”的狀態(tài)。在一些不了解編程的人看來:編程的人總面對著電腦,在鍵盤上敲打,這種生活實(shí)在太枯燥了,但實(shí)際上是因?yàn)樗麄儾⑽凑嬲私饩幊蹋⑽凑嬲哌M(jìn)編程。在外人眼中:程序員不過是在敲打鍵盤;但在程序員心中:程序員敲出的每個字符,都是程序的一部分。
程序是什么呢?程序是對現(xiàn)實(shí)世界的數(shù)字化模擬。開發(fā)一個程序,實(shí)際是創(chuàng)造一個或大或小的“模擬世界”。在這個過程中,程序員享受著“創(chuàng)造”的樂趣,程序員沉醉在他所創(chuàng)造的“模擬世界”里:瘋狂地設(shè)計、瘋狂地編碼實(shí)現(xiàn)。實(shí)現(xiàn)過程不斷地遇到問題,然后解決它;不斷地發(fā)現(xiàn)程序的缺陷,然后重新設(shè)計、修復(fù)它——這個過程本身就是一種享受。一旦完全沉浸到編程世界里,程序員是“物我兩忘”的,眼中看到的、心中想到的,只有他正在創(chuàng)造的“模擬世界”。
在學(xué)會享受編程之前,編程學(xué)習(xí)者都應(yīng)該采用“案例驅(qū)動”的方式,學(xué)習(xí)者需要明白程序的作用是:解決問題——如果你的程序不能解決你自己的問題,如何期望你的程序去解決別人的問題呢?那你的程序的價值何在?——知道一個知識點(diǎn)能解決什么問題,才去學(xué)這個知識點(diǎn),而不是盲目學(xué)習(xí)!因此本書強(qiáng)調(diào)編程實(shí)戰(zhàn),強(qiáng)調(diào)以項目激發(fā)編程興趣。
僅僅是看完這本書,你不會成為高手!在編程領(lǐng)域里,沒有所謂的“武林秘笈”,再好的書一定要配合大量練習(xí),否則書里的知識依然屬于作者,而讀者則仿佛身入寶山而一無所獲的笨漢。本書配合了大量高強(qiáng)度的練習(xí),希望讀者強(qiáng)迫自己去完成這些項目。這些習(xí)題的答案可以參考本書所附光盤中《瘋狂Java實(shí)戰(zhàn)演義》的配套代碼。如果需要獲得編程思路和交流,可以登錄http://www.crazyit.org與廣大讀者和筆者交流。
本書前兩版面市的近6年時間里,無數(shù)讀者已經(jīng)通過《瘋狂Java講義》步入了Java編程世界,而且第2版的年銷量比第1版的年銷量大幅提升,這說明“青山遮不住”,優(yōu)秀的作品,經(jīng)過時間的沉淀,往往歷久彌新。
廣大讀者對瘋狂Java的肯定、贊譽(yù)既讓筆者十分欣慰,也鞭策筆者以更高的熱情、更嚴(yán)謹(jǐn)?shù)姆绞絼?chuàng)作圖書。時至今日,每次筆者創(chuàng)作或升級圖書時,總有一種誠惶誠恐、如履薄冰的感覺,惟恐辜負(fù)廣大讀者的厚愛。
筆者非常歡迎所有熱愛編程、愿意推動中國軟件業(yè)的學(xué)習(xí)者、工作者對本書提出寶貴的意見,非常樂意與大家交流。中國軟件業(yè)還處于發(fā)展階段,所有熱愛編程、愿意推動中國軟件業(yè)的人應(yīng)該聯(lián)合起來,共同為中國軟件行業(yè)貢獻(xiàn)自己的綿薄之力。
本書有什么特點(diǎn)
本書是《瘋狂Java講義》的精粹版,本書的內(nèi)容完全取自《瘋狂Java講義》,只是對書中部分內(nèi)容進(jìn)行了簡化,力求用更通俗、更淺顯的方式進(jìn)行講解,也刪減了原書部分過于高級的知識。
因此,本書具有如下三個特點(diǎn)。
1.闡述透徹、原理清晰
本書并不是簡單地羅列Java語法規(guī)則,而是盡量從語法設(shè)計者的角度向讀者解釋每個語法規(guī)則的作用、緣由;本書力求從運(yùn)行機(jī)制來解釋代碼的運(yùn)行過程,從內(nèi)存分配的細(xì)節(jié)上剖析程序的運(yùn)行細(xì)節(jié)。閱讀本書不僅要求讀者知道怎么做,而且要求讀者能理解“為什么這么做”。
2.再現(xiàn)李剛老師課堂氛圍
本書的內(nèi)容是筆者8年多授課經(jīng)歷的總結(jié),知識體系取自瘋狂Java實(shí)戰(zhàn)的課程體系。
本書力求再現(xiàn)筆者的課堂氛圍:以淺顯比喻代替乏味的講解,以瘋狂實(shí)戰(zhàn)代替空洞的理論。
書中包含了大量“注意”、“學(xué)生提問”部分,這些正是幾千個Java學(xué)員所犯錯誤的匯總。
3.注釋詳細(xì),輕松上手
為了降低讀者閱讀的難度,書中代碼的注釋非常詳細(xì),幾乎每兩行代碼就有一行注釋。不僅如此,本書甚至還把一些簡單理論作為注釋穿插到代碼中,力求讓讀者能輕松上手。
本書所有程序中的關(guān)鍵代碼以粗體字標(biāo)出,也是為了幫助讀者能迅速找到這些程序的關(guān)鍵點(diǎn)。
本書寫給誰看
本書為打算認(rèn)真掌握J(rèn)ava編程的讀者而編寫,適合各種層次的Java學(xué)習(xí)者和工作者閱讀。本書專門針對高校課程進(jìn)行過調(diào)整,尤其適合作為高校教育、培訓(xùn)機(jī)構(gòu)的Java教材。
2014-08-15