TOP
月月讀書金,登入即領,滿600現折50!!
Java7程序設計(簡體書)
滿額折

Java7程序設計(簡體書)

商品資訊

人民幣定價:79 元
定價
:NT$ 474 元
優惠價
87412
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點 :12 點
商品簡介
作者簡介
名人推薦
目次
書摘/試閱

商品簡介

《Java 7程序設計》由全球資深Java技術專家、高級Java企業級應用架構師、《How Tomcat Works》作者親自執筆,權威性毋庸置疑。它以最新的Java 7為基礎,全面講解了Java編程語言、Java面向對象技術和Java核心類庫三大主題,包含大量案例,是系統學習Java 7程序設計的Bible級著作。《Java 7程序設計》是Java SE 7程序設計全面、系統的教程,涵蓋Java編程語言、Java OOP和Java核心類庫3大主題。本書首先介紹了Java 7的語法、語句、對象和類、核心類、繼承、錯誤處理等基礎知識,幫助讀者快速入門Java 7;然後深入解析了接口和抽象類、枚舉、集合框架、泛型、輸入輸出、嵌套類和內部類等內容,掌握這部分內容有助於深入理解Java的底層原理;接著闡述Swing的基礎和高級知識、多態、注解、國際化、Java網絡、JDBC、Java線程、併發工具、安全、Java Web應用程序、JavaServer Pages、Javadoc,以及應用程序部署等內容,掌握這部分內容有助於提升編程技能。·

作者簡介

Budi Kurniawan ,資深Java技術專家和Java企業級應用架構師,是軟件諮詢和技術出版公司Brainy Software的創始人,經驗十分豐富。他還是一位經驗豐富的技術作家,撰寫了深入揭示Tomcat工作原理和設計理念的名著《How Tomcat Works》(中文名稱:《深入剖析Tomcat》,機械工業出版社出版)和《Struts Design and Programming》,並在多種權威出版物上發表過100多篇文章。·

名人推薦

《Java 7程序設計》編輯推薦:全球資深Jvava技術專家、《How Tomcat Works》作者最新力作!
基于最新Java 7,全面講解Java編程語言、Java面向對象技術和Java核心類庫三大主題,為系統學習Java 7程序設計提供絕佳指導。

前言
歡迎閱讀本書。Java是一種很容易學會的成熟的編程語言,同時,它也匯集各種技術于一身,經常令初學者不知道從何入手。如果你也有同感,那么本書就很適合你,因為這是一本特意為初學者量身定制的教程。
作為面向初學者的教程,本書不是要教會你每一種Java技術(因為薄薄一本書是不可能囊括所有Java技術的,這也是大部分Java類書籍都只專注于某一種技術的原因)。應該說,本書涵蓋了最重要的Java編程技術,使你能以此為基礎進而學習其他技術。本書的內容依然豐富,只要你真正理解所有章節的內容,并且完成練習,你將完全能夠勝任一名中級Java程序員的日常工作。
本書共三大主題,這些是一名專業級Java程序員必須熟練掌握的內容:
Java編程語言;
Java面向對象編程(OOP);
Java核心類庫。
要想把以上三大主題組織好一本高效的Java教材之所以困難,正是因為以下兩方面的原因。一方面,Java是一種面向對象編程(OOP)的語言,如果你已經了解OOP的話,就會知道它的語法是比較容易學的。另一方面,OOP特性(如繼承、多態以及數據封裝),用現實的案例進行示范也很容易。問題在于,理解真實的Java程序需要具備Java核心類庫的知識。
由于它們之間的相輔相成關系,這三大主題并沒有劃分成三個獨立的部分,而是討論某一主題的章節會與討論另一主題的章節相互交織在一起。例如,在解釋多態之前,我要先確保你了解某些Java類,之后才能講解真實的案例。此外,如泛型這樣的語言特性,如果你事先不理解某些類,是無法解釋清楚的,因此我就會在講完那些基礎類之后再討論泛型。
還有這樣的情況:某一個主題可能會在兩個甚至更多個地方出現。例如,for語句是一項基本的語言特性,它應該在較前面的章節中進行討論。但是,for還可以用來迭代一組對象,這種特性則又只能在講完“集合框架”之后再做討論。因此,for最早在第3章中出現,之后在第11章中再度出現。
接下來,我要在此首先高度概述一下Java,粗略介紹一下面向對象編程(OOP)的概念,并簡要地描述每一章的主要內容,以及講述如何安裝Java軟件。
Java語言和技術
Java不僅是一種面向對象的編輯語言,它還是使軟件開發變得更加快速并且獲得更健壯、更安全的應用程序的一系列技術。多年來,Java之所以會成為首選的編程技術,是因為它具有如下優勢。
平臺獨立性
易用性
加速應用程序開發的完整類庫
安全性
可擴展性
廣泛的行業支持
Sun Microsystems公司于1995年開發出Java,隨后Java(盡管它從一開始就是一種通用的語言)成為編寫Applet(在Web瀏覽器上運行的小程序,為靜態的網站增添交互性)的著名語言。互聯網的快速發展有很大一部分要歸功于Java早期的成功。
然而,Applet并不是令Java魅力四射的唯一因素。Java最吸引人的另一個特性是它的平臺獨立性承諾,也就是“一次編寫,到處運行”(Write Once, Run Anywhere)的口號。這意味著編寫一個程序就可以在Windows、UNIX、Mac、Linux及其他操作系統上運行。這是任何其他編程語言都無法實現的。當時,C和C++是開發常規應用程序時最常用的兩種語言。Java自誕生之日起,似乎就搶盡了它們的風頭。
這就是Java 1.0。
1997年,Java 1.1發布了,它增加了一些更加重要的特性,例如,更好的事件模型、Java Beans以及國際化(internationalization,i18n)。
1998年12月,Java 1.2發布了。在它發布3天之后,版本號由1變成了2,它標志著于1999年開始掀起的一場以Java作為“下一代”技術的銷售戰役拉開了序幕。Java 2以4種風格出售:標準版(J2SE)、企業版(J2EE),移動版(J2ME),以及Java Card版本(從未在這個品牌名稱中采用“2”)。
接下來于2000年發布了1.3版,也就是J2SE 1.3。兩年之后發布1.4版,即J2SE 1.4。J2SE 1.5于2004年發布。但是Java 2 的1.5版隨后改成了Java 5。
2006年11月13日,即Java 6正式發布前的一個月,Sun Microsystems公司宣布Java變成開源了。Java SE 6是Sun Microsystems公司誠邀外部開發者貢獻代碼和幫助修復bug后的第一個Java版本。其實,Sun公司過去也曾接受過非本公司員工的參與,如Doug Lea在多線程方面的付出,但這是Sun公司第一次發出公開的邀請。Sun公司承認他們的資源有限,在不久的將來,外界的參與者將會幫助他們畫上完美的句號。
2007年5月,Sun公司把其Java源代碼作為免費軟件在OpenJDK社區發布。IBM、Oracle和Apple公司隨后也都紛紛加入了OpenJDK。
2010年,Oracle公司收購了Sun公司。
Java 7(代號Dolphin)于2011年7月發布,這也是通過OpenJDK進行開源合作的成果。
是什么使Java平臺能夠獨立
你一定聽說過“平臺獨立”或者“跨平臺”這類術語,它意味著程序可以在多種操作系統上運行。這也是使Java深得人心的一大原因。但是,到底是什么使Java得以實現平臺獨立呢?
在傳統的編程中,源代碼是要編譯成可執行代碼的。這種可執行代碼只能在所設計的平臺上運行。換句話說,為Windows而編寫和編譯的代碼就只能在Windows上運行,在Linux中編寫的代碼就只能在Linux上運行,等等。
傳統的編程范例
而Java程序則編譯成字節碼(bytecode)。你不能讓它自己運行字節碼,因為它不是本機代碼(native code)。字節碼只能在Java虛擬機(JVM)上運行。JVM是一種解釋字節碼的本機應用程序。Sun公司使JVM在眾多平臺上都可用,從而把Java變成一種跨平臺的語言。如圖I.2所示,同一個字節碼就可以在任何操作系統的JVM上運行。
Java編程模式
目前,JVM適用于Windows、UNIX、Linux、Free BSD,以及世界上在用的其他的所有主流操作系統。
JDK、JRE、JVM之間有何區別
我說過,Java程序必須進行編譯。事實上,任何編程語言都需要一個編譯器,經過編譯后編程語言才真正有用。編譯器是一種將程序源代碼轉化成可執行格式(如字節碼、本機代碼或者其他)的程序。在開始利用Java編程之前,必須先下載一個Java編譯器。Java編譯器是一個名為javac的程序,它是Java compiler的縮寫。
雖然javac可以將Java源代碼編譯成字節碼,但要運行字節碼,還需要一個Java虛擬機(JVM)。此外,由于你常常需要用到Java核心類庫中的類,因此還需要下載這些類庫。Java運行時環境(Java Runtime Environment,JRE)包含JVM和類庫。當然,Windows的JRE與Linux的JRE不同,也就是說,某一種操作系統的JRE與另一種操作系統的JRE是不同的。
Java軟件有兩個發行包:
JRE,它包括JVM和核心類庫,最適合用來運行字節碼。
JDK,它包括JRE,外加一個編譯器和其他工具。它是編寫和編譯Java程序的必備軟件。
簡而言之,JVM就是一種運行字節碼的本機應用程序。JRE則是一種包含JVM和Java類庫的環境。JDK則包含JRE及一個Java編譯器和其他工具。
JDK的第一個版本是1.0,之后的版本依次是1.1、1.2、1.3、1.4、1.5、1.6和1.7。對于微小的更新發布,則是在版本號之后再添加一個數字。例如,1.7.1就是對1.7版本的第一次微小的更新。
JDK 1.7(代號Dolphin)就是大家熟知的JDK 7。JDK所包含的JRE版本與JDK的相同。因此,JDK 1.7包含JRE 1.7。JDK經常也稱做SDK(Software Development Kit的縮寫)。
除了JDK之外,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中所定義的各種技術的基礎。
Java 2 Platform,企業版(J2EE)。它為開發基于組件的多層企業應用程序定義了標準。功能包括Web Services特性支持和開發工具(SDK)。
Java 2 Platform,移動版(J2ME)。它為在消費者設備上運行的應用程序提供了一種環境,如移動電話、掌上電腦(PDA),以及電視機頂盒等。J2ME包括一個JVM和有限的幾組類庫。
在版本5中出現了名稱的變化。J2SE變成了Java Platform,Standard Edition 5(Java SE 5)。而且J2EE和J2ME中的“2”也去掉了。企業版的當前版本是Java Platform,Enterprise Edition 6(Java EE 6)。J2ME現在稱做Java Platform,Micro Edition(Java ME,沒有版本號)。在本書中,Java 7就是指Java SE 7。
與Sun公司出產的第一個Java版本不同,Java SE 7(包括J2SE 1.4、Java SE 5以及Java SE 6)是一系列規范,這些規范定義了在發布時需要實現的各種特性。軟件本身稱做參考實現(Reference Implementation)。Oracle、IBM和其他公司一起,通過OpenJDK提供了Java SE 7參考實現,以及Java后續版本的參考實現。
Java EE 6也屬于規范,其中包含像Servlet、JavaServer Pages、JavaServer Faces、Java Messaging Service等技術。為了開發和運行J2EE和Java EE 6應用程序,還需要一個J2EE/Java EE 6應用服務器(application server)。任何人都可以實現一個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都是開源的應用服務器。不過它們有不同的許可要求,因此在決定使用這些產品之前,一定要確保先讀過許可內容。
Java社區進程程序
Java之所以能夠持續成為技術首選,有很大一部分要歸功于Sun公司的策略,它允許其他行業的人士參與決定Java的未來。這使得很多人都覺得Java也屬于他們每一個人。許多大公司(如IBM、Oracle、Nokia、Fujitsu等)都大力投資Java,因為它們也可以為某一種技術提出一種規范,并將它們想要的技術放到Java技術的下一個版本中。這種協同工作正是采用了Java社區進程(Java Community Process,JCP)程序的形式。它的網址是http://www.jcp.org。
由JCP程序提出的規范,就是大家所熟悉的Java Specification Requests(JSR)。例如JSR 336定義了Java SE 7。
面向對象編程概述
面向對象編程(Object-Oriented Programming,OOP)是根據真實的對象來構建應用程序模型而實現的。OOP的三個原則是封裝、繼承和多態。
OOP的好處是實實在在的。這些正是大多數現代編程語言(包括Java),均是面向對象(OO)的原因所在。我甚至可以列舉為了支持OOP而做出的兩個著名的語言轉變:C語言演變成C++,Visual Basic更新成Visual Basic.NET。
本節將闡明OOP的優勢,并評估學習OOP的難易程度。
OOP的優勢
OOP的優勢包括代碼易維護、可重用,以及易擴展。下面就詳細地介紹這些優勢。
1. 易維護。現代的軟件應用規模往往都十分巨大。以前,“大”系統包括幾千行代碼。現在,即使有上百萬行代碼也算不上大。C++之父Bjarne Stroustrup曾經說過,當一個系統變得越來越大時,就會開始給它的開發者帶來很多問題。一個小程序可以用任何語言以任何方式編寫。如果你不輕易放棄,最終還是可以使它運行起來。但大型的程序就是另一回事了。如果沒有采用“好的編程”方法,一邊修復錯誤的同時會不斷出現新的錯誤。
其原因在于,大型程序的不同部分之間是相互依賴的。當在程序的某個部分中修改某些東西時,可能不知道這個變化會對程序的其他部分造成什么樣的影響。OOP則可以很容易地使程序模塊化,這種模塊性大大減少了維護的問題。在OOP中,模塊性是可以繼承的,因為類(對象的一個模板)本身就是一個模塊。好的設計應該允許類包含類似的功能性和有關的數據。OOP中經常用到的一個重要的相關術語是耦合,它表示兩個模塊之間的交互程度。不同部分之間的松耦合會使代碼更容易實現重用,這就是OOP的另一個好處。
2. 可重用。可重用意味著之前寫好的代碼可以被代碼的創建者或需要該源代碼所提供功能的其他人重用。那么,OOP語言經常提供一些預先設計好的類庫也就不足為奇了。在Java中,它配套提供了幾百個類庫或API(應用編程接口),這些都是經過精心設計和測試過的。編寫和發布自己的類庫時也非常容易。支持編程平臺中的可重用性,這是十分吸引人的,因為它可以大大縮短開發時間。
類可重用性的一大困難是,要為類庫創建好的文檔。作為一名程序員,他要找到一個能夠為其提供所需功能的類能有多快?是找一個這樣的類快呢,還是從頭寫一個新的類更快?值得慶幸的是,Java核心和擴展的API都提供了詳實的文檔。
可重用性不僅適用于重用類和其他類型的編碼階段;在OO系統中設計應用程序時,針對OO設計問題的解決方案也可以重用。這些解決方案稱做設計模式。為了便于引用各解決方案,每種模式都有一個名字。可重用設計模式的早期說明請見經典著作《Design Patterns:Elements of Reusable Object-Oriented Software》,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著。
3. 可擴展性。每一個應用程序都是獨特的。它有自己的需求和規范。說到可重用性,有時候你可能找不到現成的類來為你提供應用程序所需的精確功能。但是,你或許可以找到一兩個能夠提供部分功能的類。可擴展性的意思是,你仍然可以使用那些類,方法是對它們進行擴展,使其滿足你的需要。這樣做你依然節省了時間,因為不必從頭編寫代碼。
在OOP中,可擴展性是通過繼承來實現的。可以擴展現成的類,對它添加一些方法或者數據,或者修改不喜歡方法的行為。如果你知道某個基本功能將多次使用,但又不想讓類提供太具體的功能,就可以提供一個泛型類,以后可以對它進行擴展,使它能夠提供特定于某個應用程序的功能。
學習OOP很困難嗎
Java程序員必須掌握OOP。事實上,如果你使用過程語言(如C或者Pascal)編過程序,就會發現它們之間有很大的區別。這其中有好有壞。
先說壞的方面。
研究人員一直在探討在學校里傳授OOP的最佳方法;有人認為,最好在教OOP之前先教過程編程。我們看到有許多地方,都是在學生臨近大學畢業時才上OOP課程。
但是現在有越來越多的學生認為,具備過程編程能力的人,在模式中的思維,與OO程序員看待和解決問題的方式有很大的不同。當需要學習OOP時,他所面臨的最大困難是要克服模式轉換。據說,要經過6~18個月才能將一個人的思維從過程模式轉換成面向對象的模式。另有研究表明,沒有學過過程編程的學生則不覺得OOP有多么難學。
接下來說好的方面。
Java堪稱最容易學習的OOP語言之一。例如,你不需要操心指針,不必浪費寶貴的時間去解決因沒有銷毀不用的對象而導致的內存泄漏等。此外,在它們早期的版本中,還提供了非常全面的類庫,并且bug相對要少得多。一旦掌握了OOP,用Java編程就變得非常容易了。
關于本書
下面概述一下各章節的主要內容:
第1章旨在讓讀者體驗使用Java的感覺。其中包括編寫一個簡單的Java程序,利用javac工具對它進行編譯,并利用java程序運行它。此外,還提出了一些關于編碼規范和集成開發環境的建議。
第2章講解Java語言的語法。該章將介紹字符集、基本類型、變量、運算符等話題。
第3章講解Java語句for、while、do-while、if、if-else、switch、break和continue。
第4章是本書中第一節關于OOP的課程。該章首先說明什么是Java對象,以及它在內存中是如何保存的。隨后繼續講解類、類成員,以及兩個OOP概念(抽象和封裝)。另外還簡單地介紹了一些有關的主題,如垃圾回收和對象比較。
第5章涵蓋Java核心類庫中重要的那些類:java.lang.Object、java.lang.String、java.lang.StringBuffer和java.lang.StringBuilder、包裝類,以及java.util.Scanner。這里面還介紹了裝箱/拆箱和可變參數。這是十分重要的一章,因為其中介紹的類是Java中最常用的一部分類。
第6章介紹一種能夠使代碼具有可擴展性的OOP特性。該章教你如何擴展類,改變子類的可見性,覆蓋方法等。
毫無疑問,錯誤處理是所有編程語言的一項重要特性。作為一種成熟的語言,Java具備十分強健的錯誤處理機制,它可以有效地防止bug蔓延。第7章詳細介紹這一機制。
第8章講解在使用數字和日期時要處理的三個問題:解析、格式化和操作。該章介紹可以幫助你完成這些任務的Java類。
第9章說明接口不僅僅是一個沒有實現的類,它還定義服務提供者和客戶端之間的契約。本章講解如何使用接口和抽象類。
第10章主要講解枚舉,這是從Java 5開始添加的一個類型。
第11章說明如何利用java.util包中的成員,將對象進行分組,并對它們進行操作。
泛型是Java中非常重要的一項特性,第12章詳細解釋這一特性。
第13章介紹流的概念,并闡述如何利用java.io包中的4個流類型來執行輸入/輸出操作。此外,還講解對象序列化和反序列化。
第14章講解如何在一個類的內部編寫另一個類,并說明為什么這項OOP特性非常有用。
第15章是本書中關于Swing的兩章之一,這是第一章。它簡單地介紹AWT組件,并詳細介紹一些基礎的Swing組件。
第16章是關于Swing的第二章。它介紹一些更高級的技術,如布局管理、事件處理,以及Swing的外觀。
多態是OOP的重要利器之一。當我們在編譯中不知道對象的類型時,多態的作用尤其出乎我們的想象。第17章講解這一特性,并給出很好的范例。
第18章討論Java中的一項特性。它介紹JDK中配套的標準注解、一般注解、元注解,以及定制注解。
如今,軟件應用程序可以部署到不同的國家和地區,這是很平常的事。這些應用程序切記要設計成國際化。第19章探討Java程序員可以使用的方法。
Applet是指可以在Web瀏覽器上運行的小程序。第20章講解Applet的生命周期、安全性限制,以及JApplet。
第21章介紹了網絡編程中使用的類。這里用一個簡單的Web服務器應用程序來說明如何使用這些類。
訪問數據庫和操作數據是業務應用程序中最重要的部分任務。數據庫服務器種類繁多,訪問不同的數據庫需要不同的技能。值得Java程序員感到慶幸的是,JDBC(Java Database Connectivity)技術為訪問數據庫提供了統一的方法。JDBC將在第22章討論。
線程是指操作系統分配處理器時間的一個基本處理單元,在一個進程里面可以有不止一個線程在執行代碼。第23章說明在Java中多線程編程并不是只有專家級程序員才能做到。
第24章是本書中關于多線程編程的第二章。這里介紹了能使多線程編程變得更加容易的接口和類。
第25章講解Java應用程序的用戶可以如何限制運行Java應用程序,以及可以如何利用加密術來保護應用程序和數據的安全。
第26章探討Servlet技術和Servlet API,并舉了幾個例子。
第27章介紹另一種Web開發技術,并講解如何編寫JSP頁面。
第28章介紹javadoc工具,Java程序員可以用它為API產生文檔。
第29章介紹Java Web Start,以及如何用它將Java應用程序部署到互聯網、局域網,甚至如何從CD進行部署。
附錄A、附錄B和附錄C分別介紹javac、java和jar工具。
附錄D和附錄E分別簡要地講解NetBeans和Eclipse開發工具。

目次

譯者序前 言第1章 初識Java1.1 第一個Java程序1.1.1 編寫Java程序1.1.2 編譯Java程序1.1.3 運行Java程序1.2 Java編碼規範1.3 集成開發環境(IDE)1.4 小結習題第2章 語言基礎2.1 ASCII和Unicode2.2 分隔符2.3 基本類型2.4 變量2.5 常量2.6 字面量2.6.1 整數字面量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 創建對象4.4 關鍵字null4.5 內存中的對象4.6 Java包4.7 封裝和訪問控制4.7.1 類訪問控制修飾符4.7.2 類成員訪問控制修飾符4.8 關鍵字this4.9 使用其他類4.10 final變量4.11 靜態成員4.12 靜態final變量4.13 靜態導入4.14 變量作用域4.15 方法重載4.16 賦值傳遞還是引用傳遞4.17 加載、鏈接和初始化4.17.1 加載4.17.2 鏈接4.17.3 初始化4.18 對象創建初始化4.19 對象的比較4.20 垃圾回收器4.21 小結習題第5章 核心類5.1 java.lang.Object5.2 java.lang.String5.2.1 比較兩個String對象5.2.2 字符串字面量5.2.3 字符轉義5.2.4 switch中的String5.2.5 String類的構造器5.2.6 String類的方法5.3 java.lang.StringBuffer和java.lang.StringBuilder5.3.1 StringBuilder類的構造器5.3.2 StringBuilder類的方法5.4 基本類型包裝5.4.1 java.lang.Integer5.4.2 java.lang.Boolean5.4.3 java.lang.Character5.5 數組5.5.1 迭代數組5.5.2 修改數組大小5.5.3 將String數組傳遞給main5.6 java.lang.Class5.7 java.lang.System5.8 java.util.Scanner5.9 裝箱和拆箱5.10 可變參數5.11 格式和printf方法5.12 小結習題第6章 繼承6.1 繼承概述6.1.1 關鍵字extends6.1.2 is-a關係6.2 可訪問性6.3 方法覆蓋6.4 調用超類的構造器6.5 調用超類的隱藏成員6.6 類型轉換6.7 Final類6.8 關鍵字instanceof6.9 小結習題第7章 錯誤處理7.1 捕捉異常7.2 沒有catch的try7.3 捕捉多個異常7.4 try-with-resources語句7.5 java.lang.Exception類7.6 從方法拋出異常7.7 用戶自定義的異常7.8 異常處理總結7.9 小結習題第8章 數字和日期8.1 數字解析8.2 數字格式化8.3 用java.text.NumberFormat解析數字8.4 java.lang.Math類8.5 java.util.Date類8.6 java.util.Calendar類8.7 用DateFormat進行日期解析和格式化8.7.1 DateFormat8.7.2 SimpleDateFormat8.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和ArrayList11.4 用Iterator和for迭代集合11.5 Set和HashSet11.6 Queue和LinkedList11.7 集合轉換11.8 Map和HashMap11.9 對象比較和排序11.9.1 使用java.lang.Comparable11.9.2 使用Comparable和Comparator11.10 小結習題第12章 泛型12.1 沒有泛型的生活12.2 泛型類型簡介12.3 使用沒有類型參數的泛型類型12.4 使用“·”通配符12.5 在方法中使用有界通配符12.6 編寫泛型類型12.7 小結習題第13章 輸入/輸出13.1 文件系統和路徑13.2 文件和的處理及操作13.2.1 創建和刪除文件及13.2.2 獲取的對象13.3.3 複製和移動文件13.2.4 文件讀取和寫入13.3 輸入/輸出流13.4 讀取二進制數據13.5 寫入二進制數據13.6 寫入文本(字符)13.6.1 Writer13.6.2 OutputStreamWriter13.6.3 PrintWriter13.7 讀取文本(字符)13.7.1 Reader13.7.2 InputStreamReader13.7.3 BufferedReader13.8 用PrintStream記錄日誌13.9 隨機訪問文件13.10 對象序列化13.11 小結習題第14章 嵌套類和內部類14.1 嵌套類概述14.2 靜態的嵌套類14.3 成員內部類14.4 局部內部類14.5 匿名內部類14.6 深入嵌套類和內部類14.7 小結習題第15章 Swing基礎知識15.1 AWT組件15.2 有用的AWT類15.2.1 java.awt.Color15.2.2 java.awt.Font15.2.3 java.awt.Point15.2.4 java.awt.Dimension15.2.5 java.awt.Rectangle15.2.6 java.awt.Graphics15.2.7 java.awt.Toolkit15.3 基礎的Swing組件15.3.1 JFrame15.3.2 調整尺寸和定位15.3.3 擴展JFrame15.3.4 JComponent15.3.5 Icon和ImageIcon15.3.6 JLabel15.3.7 JButton15.3.8 JTextField和JPasswordField15.3.9 JTextArea15.3.10 JCheckbox15.3.11 JRadioButton15.3.12 JList15.3.13 JComboBox15.3.14 JDialog15.3.15 JOptionPane15.3.16 JFileChooser15.4 小結習題第16章 Swing高級知識16.1 佈局管理器16.1.1 BorderLayout16.1.2 FlowLayout16.1.3 BoxLayout16.1.4 GridLayout16.1.5 不用LayoutManager16.2 事件處理16.2.1 Java事件模型16.2.2 Swing事件處理16.2.3 AWT事件API16.3 使用菜單16.4 外觀16.5 快速啟動畫面16.6 系統託盤支持16.7 桌面助手應用程序16.8 小結習題第17章 多態17.1 定義多態17.2 多態實戰17.3 繪圖應用程序中的多態17.4 多態和反射17.5 小結習題第18章 注解18.1 注解概述18.1.1 注解和注解類型18.1.2 注解語法18.1.3 注解接口18.2 標準注解18.2.1 Override18.2.2 Deprecated18.2.3 SuppressWarnings18.3 一般注解18.4 標準元注解18.4.1 Documented18.4.2 Inherited18.4.3 Retention18.4.4 Target18.5 定制注解類型18.5.1 編寫自己的定制注解類型18.5.2 使用定制注解類型18.5.3 用反射查詢注解18.6 小結習題第19章 國際化19.1 Locale19.2 應用程序國際化19.2.1 將文本組件單獨放進屬性文件19.2.2 用ResourceBundle讀取屬性文件19.3 將Swing應用程序國際化19.4 小結習題第20章 Applet20.1 Applet歷史簡介20.2 Applet API20.2.1 Applet類20.2.2 AppletContext接口20.2.3 AudioClip接口20.2.4 AppletStub接口20.3 安全限制20.4 編寫和部署applet20.5 AppletViewer工作原理20.6 將參數傳遞給Applet20.7 SoundPlayerApplet20.8 JApplet20.9 在JAR文件中部署Applet20.10 更快速加載20.11 小結習題第21章 Java網絡21.1 網絡概述21.2 超文本轉移協議(HTTP)21.2.1 HTTP請求21.2.2 HTTP響應21.3 java.net.URL21.3.1 解析URL21.3.2 讀取Web資源21.4 java.net.URLConnection21.4.1 讀取Web資源21.4.2 把數據寫入Web服務器21.5 java.net.Socket21.6 java.net.ServerSocket21.7 一個Web服務器應用程序21.7.1 HttpServer類21.7.2 Request類21.7.3 Response類21.7.4 運行應用程序21.8 小結習題第22章 JDBC22.1 JDBC簡介22.2 數據訪問的4個步驟22.2.1 加載JDBC驅動程序22.2.2 獲得數據庫連接22.2.3 創建Statement對象22.2.4 創建一個ResultSet對象22.3 關閉JDBC對象22.4 讀取元數據22.5 SQLTool示例22.6 小結習題第23章 Java線程23.1 Java線程簡介23.2 創建線程23.2.1 擴展線程23.2.2 實現Runnable接口23.3 使用多線程23.4 線程優先級23.5 停止線程23.6 同步23.6.1 線程衝突23.6.2 方法同步23.6.3 塊同步23.7 可見性23.8 線程協調23.9 使用Timer23.10 Swing Timer23.11 小結習題第24章 併發工具24.1 原子變量24.2 Executor和ExecutorService24.3 Callable和Future24.4 Swing Worker24.5 鎖24.6 小結習題第25章 安全25.1 Java安全概述25.2 使用安全管理器25.3 策略文件25.3.1 keystore25.3.2 grant25.4 權限25.4.1 java.io.FilePermission25.4.2 java.security.BasicPermission25.4.3 java.util.PropertyPermission25.4.4 java.net.SocketPermission25.4.5 java.security.Unresolved-Permission25.4.6 java.lang.RuntimePermission25.4.7 java.awt.AWTPermission25.4.8 java.net.NetPermission25.4.9 java.lang.reflect.Reflect-Permission25.4.10 java.io.Serializable-Permission25.4.11 java.security.Security-Permission25.4.12 java.security.AllPermission25.4.13 javax.security.auth.Auth-Permission25.5 使用Policy Tool25.6 Applet安全25.7 安全編程25.8 加密概述25.8.1 加密/解密25.8.2 驗證25.8.3 數據完整性25.8.4 SSL工作原理25.9 創建證書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 範例:簽署一個Applet25.12 Java Cryptography API25.13 小結習題第26章 Java Web應用程序26.1 Servlet應用程序架構26.2 Servlet API概述26.3 Servlet26.4 編寫基礎的Servlet應用程序26.4.1 安裝Tomcat26.4.2 編寫和編譯Servlet類26.4.3 應用程序結構26.4.4 訪問Servlet26.5 ServletRequest26.6 ServletResponse26.7 ServletConfig26.8 ServletContext26.9 GenericServlet26.10 HTTP Servlet26.10.1 HttpServlet26.10.2 HttpServletRequest26.10.3 HttpServletResponse26.10.4 編寫一個Http Servlet26.11 使用部署描述符26.12 小結習題第27章 JavaServer Pages27.1 JSP概述27.2 jspInit、jspDestroy及其他方法27.3 隱式對象27.4 JSP語法元素27.4.1 指令27.4.2 腳本元素27.5 處理錯誤27.6 小結習題第28章 Javadoc28.1 在Java類中編寫文檔28.1.1 @author28.1.2 {@code}28.1.3 {@docRoot}28.1.4 @deprecated28.1.5 @exception28.1.6 {@inheritDoc}28.1.7 {@link}28.1.8 {@linkplain}28.1.9 {@literal}28.1.10 @param28.1.11 @return28.1.12 @see28.1.13 @serial28.1.14 @serialData28.1.15 @serialField28.1.16 @since28.1.17 @throws28.1.18 {@value}28.1.19 @version28.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·

書摘/試閱

第1章 初識Java
開發Java程序包括編寫代碼,將它編譯成字節碼,然后運行這些字節碼。這是Java程序員在職業生涯中要不斷重復的過程,因此,這個過程的舒適度就顯得尤為重要。本章的主要目的就是讓你體驗一下用Java進行軟件開發的過程。
編寫出來的代碼不僅需要能夠運行,更重要的是還要易于閱讀和維護,因此,本章將先介紹Java編碼規范。此外,由于明智的開發者將會選擇使用集成開發環境(IDE)來簡化他們的工作,因此本章最后一節將會介紹Java IDE。
1.1 第一個Java程序
本節將重點介紹Java開發的步驟:編寫程序,將它編譯成字節碼,然后運行字節碼。
1.1.1 編寫Java程序
你可以利用任何一種文本編輯器來編寫Java程序。打開一個文本編輯器,并輸入代碼清單1.1中的代碼。當然,如果你已經下載了本書配套的程序范例,那么只需將它復制到你的文本編輯器中即可。
代碼清單1.1 一個簡單的Java程序
就目前而言,我們只需要將Java代碼放在一個類中即可,并確保將代碼清單1.1中的代碼另存為MyFirstJava.java文件。所有Java源文件都必須用java作為擴展名。
1.1.2 編譯Java程序
我們使用javac工具來編譯Java程序,它在JDK安裝目錄下的bin目錄中。假如在電腦中已經設置好了PATH環境變量(如果還沒有設置,請查閱“引言”中的“下載和安裝Java”),那么就可以從任何目錄下調用javac。現在用以下的操作來編譯代碼清單1.1中的MyFirstJava類:
1)打開一個命令提示符窗口,并將目錄切換到MyFirstProgram.java文件所在的目錄。
2)輸入以下命令:javac MyFirstJava.java
如果一切順利,javac會在當前工作目錄下創建一個名為MyFirstJava.class的文件。
提示 通過指定選項,可以使用javac工具提供的更多的特性。例如,可以指定將新生成的類文件放置的在什么位置。關于javac工具使用方法的詳細介紹,請參見附錄A。
1.1.3 運行Java程序
我們使用JDK的java工具來運行Java程序。當然,只有添加了PATH環境變量,才能夠從任何目錄下調用java指令。在上述命令窗口的路徑后輸入以下代碼,并按回車鍵:java MyFirstJava
注意,在運行Java程序時,不需要包含class擴展名。
這時,就可以在控制臺中看到以下代碼:Java rocks.
恭喜!你已經成功地編寫了第一個Java程序!由于本章的唯一目的就是讓你親身體驗編寫和編譯的過程,因此將不在此解釋這個程序的工作原理。
你還可以給Java程序傳遞參數。例如,要傳遞給Calculator類兩個參數,可以這樣寫:
java Calculator arg-1 arg-2
這里的arg-1是第一個參數,arg-2是第二個參數。你想傳遞多少個參數都可以,java工具會將這些參數作為一個字符串數組提供給要運行的Java程序。第5章將教你使用參數。
提示:java工具是一個高級程序,它也提供了很多配置選項。例如,可以設置要分配給它的內存大小。這些選項的解釋請參見附錄B。
提示:java工具還可以用來運行打包在jar文件中的Java類。詳情請參見附錄C中的C.4節。

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 412
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區