出版時間:2012-8 出版社:機械工業(yè)出版社 作者:克尼亞萬 頁數(shù):457
Tag標簽:無
前言
歡迎閱讀本書。Java是一種很容易學會的成熟的編程語言,同時,它也匯集各種技術于一身,經常令初學者不知道從何入手。如果你也有同感,那么本書就很適合你,因為這是一本特意為初學者量身定制的教程。 作為面向初學者的教程,本書不是要教會你每一種Java技術(因為薄薄一本書是不可能囊括所有Java技術的,這也是大部分Java類書籍都只專注于某一種技術的原因)。應該說,本書涵蓋了最重要的Java編程技術,使你能以此為基礎進而學習其他技術。本書的內容依然豐富,只要你真正理解所有章節(jié)的內容,并且完成練習,你將完全能夠勝任一名中級Java程序員的日常工作?! ”緯踩笾黝},這些是一名專業(yè)級Java程序員必須熟練掌握的內容: Java編程語言; Java面向對象編程(OOP); Java核心類庫?! ∫氚岩陨先笾黝}組織好一本高效的Java教材之所以困難,正是因為以下兩方面的原因。一方面,Java是一種面向對象編程(OOP)的語言,如果你已經了解OOP的話,就會知道它的語法是比較容易學的。另一方面,OOP特性(如繼承、多態(tài)以及數(shù)據(jù)封裝),用現(xiàn)實的案例進行示范也很容易。問題在于,理解真實的Java程序需要具備Java核心類庫的知識。 由于它們之間的相輔相成關系,這三大主題并沒有劃分成三個獨立的部分,而是討論某一主題的章節(jié)會與討論另一主題的章節(jié)相互交織在一起。例如,在解釋多態(tài)之前,我要先確保你了解某些Java類,之后才能講解真實的案例。此外,如泛型這樣的語言特性,如果你事先不理解某些類,是無法解釋清楚的,因此我就會在講完那些基礎類之后再討論泛型?! ∵€有這樣的情況:某一個主題可能會在兩個甚至更多個地方出現(xiàn)。例如,for語句是一項基本的語言特性,它應該在較前面的章節(jié)中進行討論。但是,for還可以用來迭代一組對象,這種特性則又只能在講完“集合框架”之后再做討論。因此,for最早在第3章中出現(xiàn),之后在第11章中再度出現(xiàn)。 接下來,我要在此首先高度概述一下Java,粗略介紹一下面向對象編程(OOP)的概念,并簡要地描述每一章的主要內容,以及講述如何安裝Java軟件?! ava語言和技術 Java不僅是一種面向對象的編輯語言,它還是使軟件開發(fā)變得更加快速并且獲得更健壯、更安全的應用程序的一系列技術。多年來,Java之所以會成為首選的編程技術,是因為它具有如下優(yōu)勢。 平臺獨立性 易用性 加速應用程序開發(fā)的完整類庫 安全性 可擴展性 廣泛的行業(yè)支持 Sun Microsystems公司于1995年開發(fā)出Java,隨后Java(盡管它從一開始就是一種通用的語言)成為編寫Applet(在Web瀏覽器上運行的小程序,為靜態(tài)的網站增添交互性)的著名語言?;ヂ?lián)網的快速發(fā)展有很大一部分要歸功于Java早期的成功?! ∪欢珹pplet并不是令Java魅力四射的唯一因素。Java最吸引人的另一個特性是它的平臺獨立性承諾,也就是“一次編寫,到處運行”(Write Once, Run Anywhere)的口號。這意味著編寫一個程序就可以在Windows、UNIX、Mac、Linux及其他操作系統(tǒng)上運行。這是任何其他編程語言都無法實現(xiàn)的。當時,C和C++是開發(fā)常規(guī)應用程序時最常用的兩種語言。Java自誕生之日起,似乎就搶盡了它們的風頭?! ∵@就是Java 1.0。 1997年,Java 1.1發(fā)布了,它增加了一些更加重要的特性,例如,更好的事件模型、Java Beans以及國際化(internationalization,i18n)?! ?998年12月,Java 1.2發(fā)布了。在它發(fā)布3天之后,版本號由1變成了2,它標志著于1999年開始掀起的一場以Java作為“下一代”技術的銷售戰(zhàn)役拉開了序幕。Java 2以4種風格出售:標準版(J2SE)、企業(yè)版(J2EE),移動版(J2ME),以及Java Card版本(從未在這個品牌名稱中采用“2”)?! 〗酉聛碛?000年發(fā)布了1.3版,也就是J2SE 1.3。兩年之后發(fā)布1.4版,即J2SE 1.4。J2SE 1.5于2004年發(fā)布。但是Java 2 的1.5版隨后改成了Java 5?! ?006年11月13日,即Java 6正式發(fā)布前的一個月,Sun Microsystems公司宣布Java變成開源了。Java SE 6是Sun Microsystems公司誠邀外部開發(fā)者貢獻代碼和幫助修復bug后的第一個Java版本。其實,Sun公司過去也曾接受過非本公司員工的參與,如Doug Lea在多線程方面的付出,但這是Sun公司第一次發(fā)出公開的邀請。Sun公司承認他們的資源有限,在不久的將來,外界的參與者將會幫助他們畫上完美的句號。 2007年5月,Sun公司把其Java源代碼作為免費軟件在OpenJDK社區(qū)發(fā)布。IBM、Oracle和Apple公司隨后也都紛紛加入了OpenJDK?! ?010年,Oracle公司收購了Sun公司?! ava 7(代號Dolphin)于2011年7月發(fā)布,這也是通過OpenJDK進行開源合作的成果?! ∈鞘裁词笿ava平臺能夠獨立 你一定聽說過“平臺獨立”或者“跨平臺”這類術語,它意味著程序可以在多種操作系統(tǒng)上運行。這也是使Java深得人心的一大原因。但是,到底是什么使Java得以實現(xiàn)平臺獨立呢? 在傳統(tǒng)的編程中,源代碼是要編譯成可執(zhí)行代碼的。這種可執(zhí)行代碼只能在所設計的平臺上運行。換句話說,為Windows而編寫和編譯的代碼就只能在Windows上運行,在Linux中編寫的代碼就只能在Linux上運行,等等。 傳統(tǒng)的編程范例 而Java程序則編譯成字節(jié)碼(bytecode)。你不能讓它自己運行字節(jié)碼,因為它不是本機代碼(native code)。字節(jié)碼只能在Java虛擬機(JVM)上運行。JVM是一種解釋字節(jié)碼的本機應用程序。Sun公司使JVM在眾多平臺上都可用,從而把Java變成一種跨平臺的語言。如圖I.2所示,同一個字節(jié)碼就可以在任何操作系統(tǒng)的JVM上運行?! ava編程模式 目前,JVM適用于Windows、UNIX、Linux、Free BSD,以及世界上在用的其他的所有主流操作系統(tǒng)?! DK、JRE、JVM之間有何區(qū)別 我說過,Java程序必須進行編譯。事實上,任何編程語言都需要一個編譯器,經過編譯后編程語言才真正有用。編譯器是一種將程序源代碼轉化成可執(zhí)行格式(如字節(jié)碼、本機代碼或者其他)的程序。在開始利用Java編程之前,必須先下載一個Java編譯器。Java編譯器是一個名為javac的程序,它是Java compiler的縮寫?! ‰m然javac可以將Java源代碼編譯成字節(jié)碼,但要運行字節(jié)碼,還需要一個Java虛擬機(JVM)。此外,由于你常常需要用到Java核心類庫中的類,因此還需要下載這些類庫。Java運行時環(huán)境(Java Runtime Environment,JRE)包含JVM和類庫。當然,Windows的JRE與Linux的JRE不同,也就是說,某一種操作系統(tǒng)的JRE與另一種操作系統(tǒng)的JRE是不同的?! ava軟件有兩個發(fā)行包: JRE,它包括JVM和核心類庫,最適合用來運行字節(jié)碼?! DK,它包括JRE,外加一個編譯器和其他工具。它是編寫和編譯Java程序的必備軟件?! 『喍灾琂VM就是一種運行字節(jié)碼的本機應用程序。JRE則是一種包含JVM和Java類庫的環(huán)境。JDK則包含JRE及一個Java編譯器和其他工具。 JDK的第一個版本是1.0,之后的版本依次是1.1、1.2、1.3、1.4、1.5、1.6和1.7。對于微小的更新發(fā)布,則是在版本號之后再添加一個數(shù)字。例如,1.7.1就是對1.7版本的第一次微小的更新?! DK 1.7(代號Dolphin)就是大家熟知的JDK 7。JDK所包含的JRE版本與JDK的相同。因此,JDK 1.7包含JRE 1.7。JDK經常也稱做SDK(Software Development Kit的縮寫)?! 〕薐DK之外,Java程序員還需要下載說明核心類庫中類的Java文檔。從提供JRE和JDK的同一個網址可以下載說明文檔。 Java 2、J2SE、J2EE、J2ME、Java 7究竟為何物 Sun公司為推廣Java做了很多努力。它的部分營銷策略是冠以Java 2的名稱,實際上就是JDK 1.2。Java 2有三種版本: Java 2 Platform,標準版(J2SE)。J2SE其實相當于JDK。它也是J2EE中所定義的各種技術的基礎?! ava 2 Platform,企業(yè)版(J2EE)。它為開發(fā)基于組件的多層企業(yè)應用程序定義了標準。功能包括Web Services特性支持和開發(fā)工具(SDK)?! ava 2 Platform,移動版(J2ME)。它為在消費者設備上運行的應用程序提供了一種環(huán)境,如移動電話、掌上電腦(PDA),以及電視機頂盒等。J2ME包括一個JVM和有限的幾組類庫。 在版本5中出現(xiàn)了名稱的變化。J2SE變成了Java Platform,Standard Edition 5(Java SE 5)。而且J2EE和J2ME中的“2”也去掉了。企業(yè)版的當前版本是Java Platform,Enterprise Edition 6(Java EE 6)。J2ME現(xiàn)在稱做Java Platform,Micro Edition(Java ME,沒有版本號)。在本書中,Java 7就是指Java SE 7?! ∨cSun公司出產的第一個Java版本不同,Java SE 7(包括J2SE 1.4、Java SE 5以及Java SE 6)是一系列規(guī)范,這些規(guī)范定義了在發(fā)布時需要實現(xiàn)的各種特性。軟件本身稱做參考實現(xiàn)(Reference Implementation)。Oracle、IBM和其他公司一起,通過OpenJDK提供了Java SE 7參考實現(xiàn),以及Java后續(xù)版本的參考實現(xiàn)。 Java EE 6也屬于規(guī)范,其中包含像Servlet、JavaServer Pages、JavaServer Faces、Java Messaging Service等技術。為了開發(fā)和運行J2EE和Java EE 6應用程序,還需要一個J2EE/Java EE 6應用服務器(application server)。任何人都可以實現(xiàn)一個J2EE/Java EE 6應用服務器。這說明市場上各種應用服務器很容易獲取到,其中包括一些開源的應用服務器。下面列舉了一些J2EE/Java EE 6應用服務器的例子: Oracle公司的WebLogic(之前BEA的WebLogic) IBM公司的WebSphere Sun公司的Sun Java Application Server Oracle公司的10g Application Server GlassFish JBoss Jonas Apache Geronimo JBoss、GlassFish、Jonas以及Geronimo都是開源的應用服務器。不過它們有不同的許可要求,因此在決定使用這些產品之前,一定要確保先讀過許可內容?! ava社區(qū)進程程序 Java之所以能夠持續(xù)成為技術首選,有很大一部分要歸功于Sun公司的策略,它允許其他行業(yè)的人士參與決定Java的未來。這使得很多人都覺得Java也屬于他們每一個人。許多大公司(如IBM、Oracle、Nokia、Fujitsu等)都大力投資Java,因為它們也可以為某一種技術提出一種規(guī)范,并將它們想要的技術放到Java技術的下一個版本中。這種協(xié)同工作正是采用了Java社區(qū)進程(Java Community Process,JCP)程序的形式。它的網址是http://www.jcp.org。 由JCP程序提出的規(guī)范,就是大家所熟悉的Java Specification Requests(JSR)。例如JSR 336定義了Java SE 7。 面向對象編程概述 面向對象編程(Object-Oriented Programming,OOP)是根據(jù)真實的對象來構建應用程序模型而實現(xiàn)的。OOP的三個原則是封裝、繼承和多態(tài)。 OOP的好處是實實在在的。這些正是大多數(shù)現(xiàn)代編程語言(包括Java),均是面向對象(OO)的原因所在。我甚至可以列舉為了支持OOP而做出的兩個著名的語言轉變:C語言演變成C++,Visual Basic更新成Visual Basic.NET?! ”竟?jié)將闡明OOP的優(yōu)勢,并評估學習OOP的難易程度。 OOP的優(yōu)勢 OOP的優(yōu)勢包括代碼易維護、可重用,以及易擴展。下面就詳細地介紹這些優(yōu)勢。 1. 易維護?,F(xiàn)代的軟件應用規(guī)模往往都十分巨大。以前,“大”系統(tǒng)包括幾千行代碼?,F(xiàn)在,即使有上百萬行代碼也算不上大。C++之父Bjarne Stroustrup曾經說過,當一個系統(tǒng)變得越來越大時,就會開始給它的開發(fā)者帶來很多問題。一個小程序可以用任何語言以任何方式編寫。如果你不輕易放棄,最終還是可以使它運行起來。但大型的程序就是另一回事了。如果沒有采用“好的編程”方法,一邊修復錯誤的同時會不斷出現(xiàn)新的錯誤。 其原因在于,大型程序的不同部分之間是相互依賴的。當在程序的某個部分中修改某些東西時,可能不知道這個變化會對程序的其他部分造成什么樣的影響。OOP則可以很容易地使程序模塊化,這種模塊性大大減少了維護的問題。在OOP中,模塊性是可以繼承的,因為類(對象的一個模板)本身就是一個模塊。好的設計應該允許類包含類似的功能性和有關的數(shù)據(jù)。OOP中經常用到的一個重要的相關術語是耦合,它表示兩個模塊之間的交互程度。不同部分之間的松耦合會使代碼更容易實現(xiàn)重用,這就是OOP的另一個好處?! ?. 可重用??芍赜靡馕吨皩懞玫拇a可以被代碼的創(chuàng)建者或需要該源代碼所提供功能的其他人重用。那么,OOP語言經常提供一些預先設計好的類庫也就不足為奇了。在Java中,它配套提供了幾百個類庫或API(應用編程接口),這些都是經過精心設計和測試過的。編寫和發(fā)布自己的類庫時也非常容易。支持編程平臺中的可重用性,這是十分吸引人的,因為它可以大大縮短開發(fā)時間?! ☆惪芍赜眯缘囊淮罄щy是,要為類庫創(chuàng)建好的文檔。作為一名程序員,他要找到一個能夠為其提供所需功能的類能有多快?是找一個這樣的類快呢,還是從頭寫一個新的類更快?值得慶幸的是,Java核心和擴展的API都提供了詳實的文檔。 可重用性不僅適用于重用類和其他類型的編碼階段;在OO系統(tǒng)中設計應用程序時,針對OO設計問題的解決方案也可以重用。這些解決方案稱做設計模式。為了便于引用各解決方案,每種模式都有一個名字??芍赜迷O計模式的早期說明請見經典著作《Design Patterns:Elements of Reusable Object-Oriented Software》,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著。 3. 可擴展性。每一個應用程序都是獨特的。它有自己的需求和規(guī)范。說到可重用性,有時候你可能找不到現(xiàn)成的類來為你提供應用程序所需的精確功能。但是,你或許可以找到一兩個能夠提供部分功能的類??蓴U展性的意思是,你仍然可以使用那些類,方法是對它們進行擴展,使其滿足你的需要。這樣做你依然節(jié)省了時間,因為不必從頭編寫代碼?! ≡贠OP中,可擴展性是通過繼承來實現(xiàn)的。可以擴展現(xiàn)成的類,對它添加一些方法或者數(shù)據(jù),或者修改不喜歡方法的行為。如果你知道某個基本功能將多次使用,但又不想讓類提供太具體的功能,就可以提供一個泛型類,以后可以對它進行擴展,使它能夠提供特定于某個應用程序的功能?! W習OOP很困難嗎 Java程序員必須掌握OOP。事實上,如果你使用過程語言(如C或者Pascal)編過程序,就會發(fā)現(xiàn)它們之間有很大的區(qū)別。這其中有好有壞?! ∠日f壞的方面?! ⊙芯咳藛T一直在探討在學校里傳授OOP的最佳方法;有人認為,最好在教OOP之前先教過程編程。我們看到有許多地方,都是在學生臨近大學畢業(yè)時才上OOP課程?! 〉乾F(xiàn)在有越來越多的學生認為,具備過程編程能力的人,在模式中的思維,與OO程序員看待和解決問題的方式有很大的不同。當需要學習OOP時,他所面臨的最大困難是要克服模式轉換。據(jù)說,要經過6~18個月才能將一個人的思維從過程模式轉換成面向對象的模式。另有研究表明,沒有學過過程編程的學生則不覺得OOP有多么難學?! 〗酉聛碚f好的方面?! ava堪稱最容易學習的OOP語言之一。例如,你不需要操心指針,不必浪費寶貴的時間去解決因沒有銷毀不用的對象而導致的內存泄漏等。此外,在它們早期的版本中,還提供了非常全面的類庫,并且bug相對要少得多。一旦掌握了OOP,用Java編程就變得非常容易了。 關于本書 下面概述一下各章節(jié)的主要內容: 第1章旨在讓讀者體驗使用Java的感覺。其中包括編寫一個簡單的Java程序,利用javac工具對它進行編譯,并利用java程序運行它。此外,還提出了一些關于編碼規(guī)范和集成開發(fā)環(huán)境的建議?! 〉?章講解Java語言的語法。該章將介紹字符集、基本類型、變量、運算符等話題?! 〉?章講解Java語句for、while、do-while、if、if-else、switch、break和continue?! 〉?章是本書中第一節(jié)關于OOP的課程。該章首先說明什么是Java對象,以及它在內存中是如何保存的。隨后繼續(xù)講解類、類成員,以及兩個OOP概念(抽象和封裝)。另外還簡單地介紹了一些有關的主題,如垃圾回收和對象比較?! 〉?章涵蓋Java核心類庫中重要的那些類:java.lang.Object、java.lang.String、java.lang.StringBuffer和java.lang.StringBuilder、包裝類,以及java.util.Scanner。這里面還介紹了裝箱/拆箱和可變參數(shù)。這是十分重要的一章,因為其中介紹的類是Java中最常用的一部分類。 第6章介紹一種能夠使代碼具有可擴展性的OOP特性。該章教你如何擴展類,改變子類的可見性,覆蓋方法等?! 『翢o疑問,錯誤處理是所有編程語言的一項重要特性。作為一種成熟的語言,Java具備十分強健的錯誤處理機制,它可以有效地防止bug蔓延。第7章詳細介紹這一機制?! 〉?章講解在使用數(shù)字和日期時要處理的三個問題:解析、格式化和操作。該章介紹可以幫助你完成這些任務的Java類?! 〉?章說明接口不僅僅是一個沒有實現(xiàn)的類,它還定義服務提供者和客戶端之間的契約。本章講解如何使用接口和抽象類?! 〉?0章主要講解枚舉,這是從Java 5開始添加的一個類型?! 〉?1章說明如何利用java.util包中的成員,將對象進行分組,并對它們進行操作?! 》盒褪荍ava中非常重要的一項特性,第12章詳細解釋這一特性?! 〉?3章介紹流的概念,并闡述如何利用java.io包中的4個流類型來執(zhí)行輸入/輸出操作。此外,還講解對象序列化和反序列化?! 〉?4章講解如何在一個類的內部編寫另一個類,并說明為什么這項OOP特性非常有用。 第15章是本書中關于Swing的兩章之一,這是第一章。它簡單地介紹AWT組件,并詳細介紹一些基礎的Swing組件?! 〉?6章是關于Swing的第二章。它介紹一些更高級的技術,如布局管理、事件處理,以及Swing的外觀?! 《鄳B(tài)是OOP的重要利器之一。當我們在編譯中不知道對象的類型時,多態(tài)的作用尤其出乎我們的想象。第17章講解這一特性,并給出很好的范例。 第18章討論Java中的一項特性。它介紹JDK中配套的標準注解、一般注解、元注解,以及定制注解?! ∪缃?,軟件應用程序可以部署到不同的國家和地區(qū),這是很平常的事。這些應用程序切記要設計成國際化。第19章探討Java程序員可以使用的方法?! pplet是指可以在Web瀏覽器上運行的小程序。第20章講解Applet的生命周期、安全性限制,以及JApplet?! 〉?1章介紹了網絡編程中使用的類。這里用一個簡單的Web服務器應用程序來說明如何使用這些類。 訪問數(shù)據(jù)庫和操作數(shù)據(jù)是業(yè)務應用程序中最重要的部分任務。數(shù)據(jù)庫服務器種類繁多,訪問不同的數(shù)據(jù)庫需要不同的技能。值得Java程序員感到慶幸的是,JDBC(Java Database Connectivity)技術為訪問數(shù)據(jù)庫提供了統(tǒng)一的方法。JDBC將在第22章討論?! 【€程是指操作系統(tǒng)分配處理器時間的一個基本處理單元,在一個進程里面可以有不止一個線程在執(zhí)行代碼。第23章說明在Java中多線程編程并不是只有專家級程序員才能做到?! 〉?4章是本書中關于多線程編程的第二章。這里介紹了能使多線程編程變得更加容易的接口和類?! 〉?5章講解Java應用程序的用戶可以如何限制運行Java應用程序,以及可以如何利用加密術來保護應用程序和數(shù)據(jù)的安全?! 〉?6章探討Servlet技術和Servlet API,并舉了幾個例子。 第27章介紹另一種Web開發(fā)技術,并講解如何編寫JSP頁面?! 〉?8章介紹javadoc工具,Java程序員可以用它為API產生文檔?! 〉?9章介紹Java Web Start,以及如何用它將Java應用程序部署到互聯(lián)網、局域網,甚至如何從CD進行部署?! 「戒汚、附錄B和附錄C分別介紹javac、java和jar工具?! 「戒汥和附錄E分別簡要地講解NetBeans和Eclipse開發(fā)工具。
內容概要
本書由全球資深Java技術專家、高級Java企業(yè)級應用架構師、《How Tomcat
Works》作者親自執(zhí)筆,權威性毋庸置疑。它以最新的Java
7為基礎,全面講解了Java編程語言、Java面向對象技術和Java核心類庫三大主題,包含大量案例,是系統(tǒng)學習Java
7程序設計的Bible級著作。本書是Java SE 7程序設計全面、系統(tǒng)的教程,涵蓋Java編程語言、Java
OOP和Java核心類庫3大主題。本書首先介紹了Java
7的語法、語句、對象和類、核心類、繼承、錯誤處理等基礎知識,幫助讀者快速入門Java
7;然后深入解析了接口和抽象類、枚舉、集合框架、泛型、輸入輸出、嵌套類和內部類等內容,掌握這部分內容有助于深入理解Java的底層原理;接著闡述Swing的基礎和高級知識、多態(tài)、注解、國際化、Java網絡、JDBC、Java線程、并發(fā)工具、安全、Java
Web應用程序、JavaServer Pages、Javadoc,以及應用程序部署等內容,掌握這部分內容有助于提升編程技能。
作者簡介
Budi Kurniawan
資深Java技術專家和Java企業(yè)級應用架構師,是軟件咨詢和技術出版公司Brainy
Software的創(chuàng)始人,經驗十分豐富。他還是一位經驗豐富的技術作家,撰寫了深入揭示Tomcat工作原理和設計理念的名著《How
Tomcat Works》(中文名稱:《深入剖析Tomcat》,機械工業(yè)出版社出版)和《Struts Design and
Programming》,并在多種權威出版物上發(fā)表過100多篇文章。
書籍目錄
譯者序
前 言
第1章 初識Java
1.1 第一個Java程序
1.1.1 編寫Java程序
1.1.2 編譯Java程序
1.1.3 運行Java程序
1.2 Java編碼規(guī)范
1.3 集成開發(fā)環(huán)境(IDE)
1.4 小結
習題
第2章 語言基礎
2.1 ASCII和Unicode
2.2 分隔符
2.3 基本類型
2.4 變量
2.5 常量
2.6 字面量
2.6.1 整數(shù)字面量
2.6.2 浮點字面量
2.6.3 布爾字面量
2.6.4 字符字面量
2.7 基本類型轉換
2.7.1 擴大轉換
2.7.2 縮小轉換
2.8 操作符
2.8.1 一元操作符
2.8.2 算術操作符
2.9 注解
2.10 小結
習題
第3章 語句
3.1 Java語句概述
3.2 if語句
3.3 while語句
3.4 do-while語句
3.5 for語句
3.6 break語句
3.7 continue語句
3.8 switch語句
3.9 小結
習題
第4章 對象和類
4.1 什么是Java對象
4.2 Java類
4.2.1 域
4.2.2 方法
4.2.3 UML類圖中的類成員
4.3 創(chuàng)建對象
4.4 關鍵字null
4.5 內存中的對象
4.6 Java包
4.7 封裝和訪問控制
4.7.1 類訪問控制修飾符
4.7.2 類成員訪問控制修飾符
4.8 關鍵字this
4.9 使用其他類
4.10 final變量
4.11 靜態(tài)成員
4.12 靜態(tài)final變量
4.13 靜態(tài)導入
4.14 變量作用域
4.15 方法重載
4.16 賦值傳遞還是引用傳遞
4.17 加載、鏈接和初始化
4.17.1 加載
4.17.2 鏈接
4.17.3 初始化
4.18 對象創(chuàng)建初始化
4.19 對象的比較
4.20 垃圾回收器
4.21 小結
習題
第5章 核心類
5.1 java.lang.Object
5.2 java.lang.String
5.2.1 比較兩個String對象
5.2.2 字符串字面量
5.2.3 字符轉義
5.2.4 switch中的String
5.2.5 String類的構造器
5.2.6 String類的方法
5.3 java.lang.StringBuffer和java.lang.StringBuilder
5.3.1 StringBuilder類的構造器
5.3.2 StringBuilder類的方法
5.4 基本類型包裝
5.4.1 java.lang.Integer
5.4.2 java.lang.Boolean
5.4.3 java.lang.Character
5.5 數(shù)組
5.5.1 迭代數(shù)組
5.5.2 修改數(shù)組大小
5.5.3 將String數(shù)組傳遞給main
5.6 java.lang.Class
5.7 java.lang.System
5.8 java.util.Scanner
5.9 裝箱和拆箱
5.10 可變參數(shù)
5.11 格式和printf方法
5.12 小結
習題
第6章 繼承
6.1 繼承概述
6.1.1 關鍵字extends
6.1.2 is-a關系
6.2 可訪問性
6.3 方法覆蓋
6.4 調用超類的構造器
6.5 調用超類的隱藏成員
6.6 類型轉換
6.7 Final類
6.8 關鍵字instanceof
6.9 小結
習題
第7章 錯誤處理
7.1 捕捉異常
7.2 沒有catch的try
7.3 捕捉多個異常
7.4 try-with-resources語句
7.5 java.lang.Exception類
7.6 從方法拋出異常
7.7 用戶自定義的異常
7.8 異常處理總結
7.9 小結
習題
第8章 數(shù)字和日期
8.1 數(shù)字解析
8.2 數(shù)字格式化
8.3 用java.text.NumberFormat解析數(shù)字
8.4 java.lang.Math類
8.5 java.util.Date類
8.6 java.util.Calendar類
8.7 用DateFormat進行日期解析和格式化
8.7.1 DateFormat
8.7.2 SimpleDateFormat
8.8 小結
習題
第9章 接口和抽象類
9.1 接口的概念
9.2 從技術角度看接口
9.2.1 接口中的域
9.2.2 方法
9.3 基類
9.4 抽象類
9.5 小結
習題
第10章 枚舉
10.1 枚舉概述
10.2 類中的枚舉
10.3 java.lang.Enum類
10.4 迭代枚舉值
10.5 枚舉在switch中的應用
10.6 小結
習題
第11章 集合框架
11.1 集合框架概述
11.2 Collection接口
11.3 List和ArrayList
11.4 用Iterator和for迭代集合
11.5 Set和HashSet
11.6 Queue和LinkedList
11.7 集合轉換
11.8 Map和HashMap
11.9 對象比較和排序
11.9.1 使用java.lang.Comparable
11.9.2 使用Comparable和Comparator
11.10 小結
習題
第12章 泛型
12.1 沒有泛型的生活
12.2 泛型類型簡介
12.3 使用沒有類型參數(shù)的泛型類型
12.4 使用“·”通配符
12.5 在方法中使用有界通配符
12.6 編寫泛型類型
12.7 小結
習題
第13章 輸入/輸出
13.1 文件系統(tǒng)和路徑
13.2 文件和目錄的處理及操作
13.2.1 創(chuàng)建和刪除文件及目錄
13.2.2 獲取目錄的對象
13.3.3 復制和移動文件
13.2.4 文件讀取和寫入
13.3 輸入/輸出流
13.4 讀取二進制數(shù)據(jù)
13.5 寫入二進制數(shù)據(jù)
13.6 寫入文本(字符)
13.6.1 Writer
13.6.2 OutputStreamWriter
13.6.3 PrintWriter
13.7 讀取文本(字符)
13.7.1 Reader
13.7.2 InputStreamReader
13.7.3 BufferedReader
13.8 用PrintStream記錄日志
13.9 隨機訪問文件
13.10 對象序列化
13.11 小結
習題
第14章 嵌套類和內部類
14.1 嵌套類概述
14.2 靜態(tài)的嵌套類
14.3 成員內部類
14.4 局部內部類
14.5 匿名內部類
14.6 深入嵌套類和內部類
14.7 小結
習題
第15章 Swing基礎知識
15.1 AWT組件
15.2 有用的AWT類
15.2.1 java.awt.Color
15.2.2 java.awt.Font
15.2.3 java.awt.Point
15.2.4 java.awt.Dimension
15.2.5 java.awt.Rectangle
15.2.6 java.awt.Graphics
15.2.7 java.awt.Toolkit
15.3 基礎的Swing組件
15.3.1 JFrame
15.3.2 調整尺寸和定位
15.3.3 擴展JFrame
15.3.4 JComponent
15.3.5 Icon和ImageIcon
15.3.6 JLabel
15.3.7 JButton
15.3.8 JTextField和JPasswordField
15.3.9 JTextArea
15.3.10 JCheckbox
15.3.11 JRadioButton
15.3.12 JList
15.3.13 JComboBox
15.3.14 JDialog
15.3.15 JOptionPane
15.3.16 JFileChooser
15.4 小結
習題
第16章 Swing高級知識
16.1 布局管理器
16.1.1 BorderLayout
16.1.2 FlowLayout
16.1.3 BoxLayout
16.1.4 GridLayout
16.1.5 不用LayoutManager
16.2 事件處理
16.2.1 Java事件模型
16.2.2 Swing事件處理
16.2.3 AWT事件API
16.3 使用菜單
16.4 外觀
16.5 快速啟動畫面
16.6 系統(tǒng)托盤支持
16.7 桌面助手應用程序
16.8 小結
習題
第17章 多態(tài)
17.1 定義多態(tài)
17.2 多態(tài)實戰(zhàn)
17.3 繪圖應用程序中的多態(tài)
17.4 多態(tài)和反射
17.5 小結
習題
第18章 注解
18.1 注解概述
18.1.1 注解和注解類型
18.1.2 注解語法
18.1.3 注解接口
18.2 標準注解
18.2.1 Override
18.2.2 Deprecated
18.2.3 SuppressWarnings
18.3 一般注解
18.4 標準元注解
18.4.1 Documented
18.4.2 Inherited
18.4.3 Retention
18.4.4 Target
18.5 定制注解類型
18.5.1 編寫自己的定制注解類型
18.5.2 使用定制注解類型
18.5.3 用反射查詢注解
18.6 小結
習題
第19章 國際化
19.1 Locale
19.2 應用程序國際化
19.2.1 將文本組件單獨放進屬性文件
19.2.2 用ResourceBundle讀取屬性文件
19.3 將Swing應用程序國際化
19.4 小結
習題
第20章 Applet
20.1 Applet歷史簡介
20.2 Applet API
20.2.1 Applet類
20.2.2 AppletContext接口
20.2.3 AudioClip接口
20.2.4 AppletStub接口
20.3 安全限制
20.4 編寫和部署applet
20.5 AppletViewer工作原理
20.6 將參數(shù)傳遞給Applet
20.7 SoundPlayerApplet
20.8 JApplet
20.9 在JAR文件中部署Applet
20.10 更快速加載
20.11 小結
習題
第21章 Java網絡
21.1 網絡概述
21.2 超文本轉移協(xié)議(HTTP)
21.2.1 HTTP請求
21.2.2 HTTP響應
21.3 java.net.URL
21.3.1 解析URL
21.3.2 讀取Web資源
21.4 java.net.URLConnection
21.4.1 讀取Web資源
21.4.2 把數(shù)據(jù)寫入Web服務器
21.5 java.net.Socket
21.6 java.net.ServerSocket
21.7 一個Web服務器應用程序
21.7.1 HttpServer類
21.7.2 Request類
21.7.3 Response類
21.7.4 運行應用程序
21.8 小結
習題
第22章 JDBC
22.1 JDBC簡介
22.2 數(shù)據(jù)訪問的4個步驟
22.2.1 加載JDBC驅動程序
22.2.2 獲得數(shù)據(jù)庫連接
22.2.3 創(chuàng)建Statement對象
22.2.4 創(chuàng)建一個ResultSet對象
22.3 關閉JDBC對象
22.4 讀取元數(shù)據(jù)
22.5 SQLTool示例
22.6 小結
習題
第23章 Java線程
23.1 Java線程簡介
23.2 創(chuàng)建線程
23.2.1 擴展線程
23.2.2 實現(xiàn)Runnable接口
23.3 使用多線程
23.4 線程優(yōu)先級
23.5 停止線程
23.6 同步
23.6.1 線程沖突
23.6.2 方法同步
23.6.3 塊同步
23.7 可見性
23.8 線程協(xié)調
23.9 使用Timer
23.10 Swing Timer
23.11 小結
習題
第24章 并發(fā)工具
24.1 原子變量
24.2 Executor和ExecutorService
24.3 Callable和Future
24.4 Swing Worker
24.5 鎖
24.6 小結
習題
第25章 安全
25.1 Java安全概述
25.2 使用安全管理器
25.3 策略文件
25.3.1 keystore
25.3.2 grant
25.4 權限
25.4.1 java.io.FilePermission
25.4.2 java.security.BasicPermission
25.4.3 java.util.PropertyPermission
25.4.4 java.net.SocketPermission
25.4.5 java.security.Unresolved-Permission
25.4.6 java.lang.RuntimePermission
25.4.7 java.awt.AWTPermission
25.4.8 java.net.NetPermission
25.4.9 java.lang.reflect.Reflect-Permission
25.4.10 java.io.Serializable-Permission
25.4.11 java.security.Security-Permission
25.4.12 java.security.AllPermission
25.4.13 javax.security.auth.Auth-Permission
25.5 使用Policy Tool
25.6 Applet安全
25.7 安全編程
25.8 加密概述
25.8.1 加密/解密
25.8.2 驗證
25.8.3 數(shù)據(jù)完整性
25.8.4 SSL工作原理
25.9 創(chuàng)建證書
25.10 KeyTool程序
25.10.1 生成配對的密鑰
25.10.2 進行認證
25.10.3 將證書導入密鑰庫
25.10.4 從密鑰庫中導出證書
25.10.5 列出密鑰庫條目
25.11 JarSigner工具
25.11.1 簽署JAR文件
25.11.2 驗證已簽署的JAR文件
25.11.3 范例:簽署一個Applet
25.12 Java Cryptography API
25.13 小結
習題
第26章 Java Web應用程序
26.1 Servlet應用程序架構
26.2 Servlet API概述
26.3 Servlet
26.4 編寫基礎的Servlet應用程序
26.4.1 安裝Tomcat
26.4.2 編寫和編譯Servlet類
26.4.3 應用程序目錄結構
26.4.4 訪問Servlet
26.5 ServletRequest
26.6 ServletResponse
26.7 ServletConfig
26.8 ServletContext
26.9 GenericServlet
26.10 HTTP Servlet
26.10.1 HttpServlet
26.10.2 HttpServletRequest
26.10.3 HttpServletResponse
26.10.4 編寫一個Http Servlet
26.11 使用部署描述符
26.12 小結
習題
第27章 JavaServer Pages
27.1 JSP概述
27.2 jspInit、jspDestroy及其他方法
27.3 隱式對象
27.4 JSP語法元素
27.4.1 指令
27.4.2 腳本元素
27.5 處理錯誤
27.6 小結
習題
第28章 Javadoc
28.1 在Java類中編寫文檔
28.1.1 @author
28.1.2 {@code}
28.1.3 {@docRoot}
28.1.4 @deprecated
28.1.5 @exception
28.1.6 {@inheritDoc}
28.1.7 {@link}
28.1.8 {@linkplain}
28.1.9 {@literal}
28.1.10 @param
28.1.11 @return
28.1.12 @see
28.1.13 @serial
28.1.14 @serialData
28.1.15 @serialField
28.1.16 @since
28.1.17 @throws
28.1.18 {@value}
28.1.19 @version
28.2 Javadoc語法
28.2.1 Javadoc選項
28.2.2 標準Doclet選項
28.2.3 生成文檔
28.3 小結
習題
第29章 應用程序部署
29.1 JWS概述
29.2 JNLP文件語法
29.2.1 jnlp元素
29.2.2 information元素
29.2.3 security元素
29.2.4 resources元素
29.2.5 application-desc元素
29.2.6 applet-desc元素
29.3 部署范例
29.4 安全關注點
29.5 小結
習題
附錄A javac
附錄B java
附錄C jar
附錄D NetBeans
附錄E Eclipse
章節(jié)摘錄
第1章 初識Java 開發(fā)Java程序包括編寫代碼,將它編譯成字節(jié)碼,然后運行這些字節(jié)碼。這是Java程序員在職業(yè)生涯中要不斷重復的過程,因此,這個過程的舒適度就顯得尤為重要。本章的主要目的就是讓你體驗一下用Java進行軟件開發(fā)的過程。 編寫出來的代碼不僅需要能夠運行,更重要的是還要易于閱讀和維護,因此,本章將先介紹Java編碼規(guī)范。此外,由于明智的開發(fā)者將會選擇使用集成開發(fā)環(huán)境(IDE)來簡化他們的工作,因此本章最后一節(jié)將會介紹Java IDE?! ?.1 第一個Java程序 本節(jié)將重點介紹Java開發(fā)的步驟:編寫程序,將它編譯成字節(jié)碼,然后運行字節(jié)碼?! ?.1.1 編寫Java程序 你可以利用任何一種文本編輯器來編寫Java程序。打開一個文本編輯器,并輸入代碼清單1.1中的代碼。當然,如果你已經下載了本書配套的程序范例,那么只需將它復制到你的文本編輯器中即可。 代碼清單1.1 一個簡單的Java程序 就目前而言,我們只需要將Java代碼放在一個類中即可,并確保將代碼清單1.1中的代碼另存為MyFirstJava.java文件。所有Java源文件都必須用java作為擴展名?! ?.1.2 編譯Java程序 我們使用javac工具來編譯Java程序,它在JDK安裝目錄下的bin目錄中。假如在電腦中已經設置好了PATH環(huán)境變量(如果還沒有設置,請查閱“引言”中的“下載和安裝Java”),那么就可以從任何目錄下調用javac?,F(xiàn)在用以下的操作來編譯代碼清單1.1中的MyFirstJava類: 1)打開一個命令提示符窗口,并將目錄切換到MyFirstProgram.java文件所在的目錄?! ?)輸入以下命令:javac MyFirstJava.java 如果一切順利,javac會在當前工作目錄下創(chuàng)建一個名為MyFirstJava.class的文件?! √崾尽⊥ㄟ^指定選項,可以使用javac工具提供的更多的特性。例如,可以指定將新生成的類文件放置的在什么位置。關于javac工具使用方法的詳細介紹,請參見附錄A?! ?.1.3 運行Java程序 我們使用JDK的java工具來運行Java程序。當然,只有添加了PATH環(huán)境變量,才能夠從任何目錄下調用java指令。在上述命令窗口的路徑后輸入以下代碼,并按回車鍵:java MyFirstJava 注意,在運行Java程序時,不需要包含class擴展名?! ∵@時,就可以在控制臺中看到以下代碼:Java rocks. 恭喜!你已經成功地編寫了第一個Java程序!由于本章的唯一目的就是讓你親身體驗編寫和編譯的過程,因此將不在此解釋這個程序的工作原理?! ∧氵€可以給Java程序傳遞參數(shù)。例如,要傳遞給Calculator類兩個參數(shù),可以這樣寫: java Calculator arg-1 arg-2 這里的arg-1是第一個參數(shù),arg-2是第二個參數(shù)。你想傳遞多少個參數(shù)都可以,java工具會將這些參數(shù)作為一個字符串數(shù)組提供給要運行的Java程序。第5章將教你使用參數(shù)?! √崾荆簀ava工具是一個高級程序,它也提供了很多配置選項。例如,可以設置要分配給它的內存大小。這些選項的解釋請參見附錄B?! √崾荆簀ava工具還可以用來運行打包在jar文件中的Java類。詳情請參見附錄C中的C.4節(jié)。 ……
編輯推薦
·全球資深Jvava技術專家、《How Tomcat Works》作者最新力作! ·基于最新Java 7,全面講解Java編程語言、Java面向對象技術和Java核心類庫三大主題,為系統(tǒng)學習Java 7程序設計提供絕佳指導。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載