瘋狂Java講義(第2版)

瘋狂Java講義(第2版)

《瘋狂Java講義(第2版)》是2012年1月電子工業出版社出版的圖書,作者李剛。

內容介紹

本書是《瘋狂Java講義》的第2版,第2版保持了第1版系統、全面、講解淺顯、細緻的特性,全面介紹了新增的Java 7的新特性。

本書深入介紹了Java編程的相關方面,全書內容覆蓋了Java的基本語法結構、Java的面向對象特徵、Java集合框架體系、Java泛型、異常處理、Java GUI編程、JDBC資料庫編程、Java注釋、Java的IO流體系、Java多執行緒編程、Java網路通信編程和Java反射機制;覆蓋了java.lang、java.util、java.text和java.nio、java.sql、java.awt、javax.swing包下絕大部分類和接口。本書全面介紹了Java 7的二進制整數、菱形語法、增強switch語句、多異常捕獲、自動關閉資源的try語句、JDBC 4.1新特性、NIO.2、AIO等新特性。

與第1版類似,本書並不單純從知識角度來講解Java,而是從解決問題的角度來介紹Java語言,所以本書中涉及大量的實用案例開發:五子棋遊戲、梭哈遊戲、仿QQ的遊戲大廳、MySQL企業管理器、仿EditPlus的文本編輯器、多執行緒、斷點下載工具、Spring框架的IoC容器……這些案例既能讓讀者鞏固每章的知識,又可以讓讀者學以致用,激發編程自豪感,進而引爆內心的編程激情。本書光碟里包含書中所有示例的代碼和《瘋狂Java實戰演義》的所有項目代碼,這些項目可以作為本書課後練習的“非標準答案”。如果讀者需要獲取關於課後習題的解決方法、編程思路,可以登錄站點與筆者及本書龐大的讀者群相互交流。

本書為所有打算深入掌握Java編程的讀者而編寫,適合各種層次的Java學習者和工作者閱讀,也適合作為大學教育、培訓機構的Java教材。但如果只是想簡單涉獵Java,則本書過於龐大,不適合閱讀。

作者簡介

李剛,從事10多年的Java EE套用開發,現任瘋狂軟體教育中心教學總監。

瘋狂Java實訓營創始人,瘋狂Java體系圖書作者。曾任LITEON公司的J2EE技術主管,負責該公司的企業信息化平台的架構設計。

曾任廣州電信、廣東龍泉科技等公司的技術培訓導師。曾兼任廣東技術師範學院計算機科學系的兼職副教授。

2007年3月26日的《電腦報》專訪人物。

培訓的學生已在華為、立信、普信、網易、電信盈科等公司就職。

國內著名的高端IT技術作家,已出版《瘋狂Java講義》、《瘋狂Android講義》、《輕量級Java EE企業套用實戰》、《瘋狂Ajax講義》、《瘋狂XML講義》、《經典Java EE企業套用實戰》、《Struts 2.1權威指南》、《Ruby On Rails敏捷開發最佳實踐》等著作。其中瘋狂Java體系圖書都是已經得到廣泛的市場認同,並多次重印的暢銷圖書,並被多家高校選作教材,部分圖書已被翻譯成繁體中文版、輸出到台灣地區。

圖書目錄

第1章 Java語言概述1

第2章 理解面向對象21

第3章 數據類型和運算符37

第4章 流程控制與數組70

第5章 面向對象(上)105

第6章 面向對象(下)162

第7章 與運行環境互動234

第8章 Java集合274

第9章 泛型322

第10章 異常處理345

第11章 AWT編程370

第12章 Swing編程432

第13章 MySQL資料庫與JDBC編程560

第14章 Annotation(注釋)636

第16章 多執行緒707

第17章 網路編程754

第18章 類載入機制與反射812

圖書序言

如何學習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日

圖書前言

2011年7月28日,Oracle如約發布了Java 7正式版。從Java 6到Java 7,廣大開發者經過了漫長的等待,新發布的Java 7基本滿足了廣大開發者的渴望:Java 7加入了不少新特性,這些新特性進一步增強了Java語言的功能。

為了向廣大工作者、學習者介紹最新、最前沿的Java知識,在Java 7正式發布之前,筆者已經深入研究過Java 7絕大部分可能新增的功能;當Java 7正式發布之後,筆者在第一時間開始了《瘋狂Java講義》的升級:使用Java 7改寫了全書所有程式,全面介紹了Java 7的各種新特性。

在以“瘋狂Java體系”圖書為教材的瘋狂軟體教育中心裡,經常有學生詢問:為什麼叫瘋狂Java這個名字?也有一些讀者通過網路、郵件來詢問這個問題。其實這個問題的答案可以在本書第1版的前言中找到。瘋狂的本質是一種“享受編程”的狀態。在一些不了解編程的人看來:編程的人總面對著電腦、在鍵盤上敲打,這種生活實在太枯燥了,但實際上是因為他們並未真正了解編程,並未真正走進編程。在外人眼中:程式設計師不過是在敲打鍵盤;但在程式設計師心中:程式設計師敲出的每個字元,都是程式的一部分。

程式是什麼呢?程式是對現實世界的數位化模擬。開發一個程式,實際是創造一個或大或小的“模擬世界”。在這個過程中,程式設計師享受著“創造”的樂趣,程式設計師沉醉在他所創造的“模擬世界”里:瘋狂地設計、瘋狂地編碼實現。實現過程不斷地遇到問題,然後解決它;不斷地發現程式的缺陷,然後重新設計、修復它——這個過程本身就是一種享受。一旦完全沉浸到編程世界裡,程式設計師是“物我兩忘”的,眼中看到的、心中想到的,只有他正在創造的“模擬世界”。

在學會享受編程之前,編程學習者都應該採用“案例驅動”的方式,學習者需要明白程式的作用是:解決問題——如果你的程式不能解決你自己的問題,如何期望你的程式去解決別人的問題呢?那你的程式的價值何在?——知道一個知識點能解決什麼問題,才去學這個知識點,而不是盲目學習!因此本書強調編程實戰,強調以項目激發編程興趣。

僅僅是看完這本書,你不會成為高手!在編程領域裡,沒有所謂的“武林秘籍”,再好的書一定要配合大量練習,否則書里的知識依然屬於作者,而讀者則仿佛身入寶山而一無所獲的笨漢。本書配合了大量高強度的練習,希望讀者強迫自己去完成這些項目。這些習題的答案可以參考本書所附光碟中《瘋狂Java實戰演義》的配套代碼。如果需要獲得編程思路和交流,可以登錄與廣大讀者和筆者交流。

本書第1版面市的近3年時間裡,幾萬讀者已經通過本書步入了Java編程世界,這些讀者的肯定、讚譽讓筆者感到十分欣慰。也有不少讀者給予本書一些很好的建議,因此筆者在創作第2版時對部分章節進行了一些小調整,希望這種調整能讓本書日臻完善。

筆者非常歡迎所有熱愛編程、願意推動中國軟體業的學習者、工作者對本書提出寶貴的意見,非常樂意與大家交流。中國軟體業還處於發展階段,所有熱愛編程、願意推動中國軟體業的人應該聯合起來,共同為中國軟體行業貢獻自己的綿薄之力。

本書有什麼特點

本書並不是一本簡單的Java入門教材,也不是一門“閉門造車”式的Java讀物。本書來自於筆者6年多的Java培訓經歷,凝結了筆者近6000小時的授課經驗,總結了上千個Java學員學習過程中的典型錯誤。

因此,本書具有如下三個特點:

1.案例驅動,引爆編程激情

本書不再是知識點的鋪陳,而是致力於將知識點融入實際項目的開發中,所以本書中涉及了大量Java案例:仿QQ的遊戲大廳、MySQL企業管理器、仿EditPlus的文本編輯器、多執行緒、斷點下載工具……希望讀者通過編寫這些程式找到編程的樂趣。

2.再現李剛老師課堂氛圍

本書的內容是筆者6年多授課經歷的總結,知識體系取自瘋狂Java實戰的課程體系。

本書力求再現筆者的課堂氛圍:以淺顯比喻代替乏味的講解,以瘋狂實戰代替空洞的理論。

書中包含了大量“注意”、“學生提問”部分,這些正是上千個Java學員所犯錯誤的匯總。

3.注釋詳細,輕鬆上手

為了降低讀者閱讀的難度,書中代碼的注釋非常詳細,幾乎每兩行代碼就有一行注釋。不僅如此,本書甚至還把一些簡單理論作為注釋穿插到代碼中,力求讓讀者能輕鬆上手。

本書所有程式中關鍵代碼以粗體字標出,也是為了幫助讀者能迅速找到這些程式的關鍵點。

本書寫給誰看

如果你僅僅想對Java有所涉獵,那么本書並不適合你;如果你想全面掌握Java語言,並使用Java來解決問題、開發項目,或者希望以Java編程作為你的職業,那么本書將非常適合你。希望本書能引爆你內心潛在的編程激情,如果本書能讓你產生廢寢忘食的感覺,那筆者就非常欣慰了。

李剛

2011-12-17

相關詞條

熱門詞條

聯絡我們