java學(xué)習(xí)入門到精通(非常好)_第1頁
java學(xué)習(xí)入門到精通(非常好)_第2頁
java學(xué)習(xí)入門到精通(非常好)_第3頁
java學(xué)習(xí)入門到精通(非常好)_第4頁
java學(xué)習(xí)入門到精通(非常好)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Java Learning Path (一)工具篇一、 JDK (Java Development Kit)JDK是整個Java的核心,包括了Java運行環(huán)境(Java Runtime Envirnment),一堆Java工具和Java基礎(chǔ)的類庫(rt.jar)。不論什么Java應(yīng)用服務(wù)器實質(zhì)都是內(nèi)置了某個版本的JDK。因此掌握J(rèn)DK是學(xué)好Java的第一步。最主流的JDK是Sun公司發(fā)布的JDK,除了Sun之外,還有很多公司和組織都開發(fā)了自己的JDK,例如IBM公司開發(fā)的JDK,BEA公司的Jrocket,還有GNU組織開發(fā)的JDK等等。其中IBM的JDK包含的JVM(Java Virtual

2、 Machine)運行效率要比Sun JDK包含的JVM高出許多。而專門運行在x86平臺的Jrocket在服務(wù)端運行效率也要比Sun JDK好很多。但不管怎么說,我們還是需要先把Sun JDK掌握好。1、 JDK的下載和安裝JDK又叫做J2SE(Java2 SDK Standard Edition),可以從Sun的Java網(wǎng)站上下載到, ,下載頁面在這里:2、 JDK的命令工具JDK的最重要命令行工具:java: 啟動JVM執(zhí)行classjavac: Java編譯器jar: Java打包工具javadoc: Java文檔生成器這些命令行必須要非常非常熟悉,對于每個參數(shù)都要很精通才行。對于這些命

3、令的學(xué)習(xí),JDK Documentation上有詳細(xì)的文檔。二、 JDK DocumentationDocumentation在JDK的下載頁面也有下載連接,建議同時下載Documentation。Documentation是最最重要的編程手冊,涵蓋了整個Java所有方面的內(nèi)容的描述??梢赃@樣說,學(xué)習(xí)Java編程,大部分時間都是花在看這個Documentation上面的。我是隨身攜帶的,寫Java代碼的時候,隨時查看,須臾不離手。三、 應(yīng)用服務(wù)器(App Server)App Server是運行Java企業(yè)組件的平臺,構(gòu)成了應(yīng)用軟件的主要運行環(huán)境。當(dāng)前主流的App Server是BEA公司的W

4、eblogic Server和IBM公司的Websphere以及免費的Jboss,選擇其中一個進行學(xué)習(xí)就可以了,個人推薦Weblogic,因為它的體系結(jié)構(gòu)更加干凈,開發(fā)和部署更加方便,是Java企業(yè)軟件開發(fā)人員首選的開發(fā)平臺。下面簡要介紹幾種常用的App Server:1、 TomcatTomcat嚴(yán)格意義上并不是一個真正的App Server,它只是一個可以支持運行Serlvet/JSP的Web容器,不過Tomcat也擴展了一些App Server的功能,如JNDI,數(shù)據(jù)庫連接池,用戶事務(wù)處理等等。Tomcat被非常廣泛的應(yīng)用在中小規(guī)模的Java Web應(yīng)用中,因此本文做一點下載、安裝和配置

5、Tomcat的介紹:Tomcat是Apache組織下Jakarta項目下的一個子項目,它的主網(wǎng)站是: Tomcat軟件下載的連接是: 。下載Tomcat既可以直接下載zip包,也可以下載exe安裝包(個人建議zip更干凈些),不管哪種情況,下載完畢安裝好以后(zip直接解壓縮就可以了)。需要設(shè)置兩個環(huán)境變量:JAVA_HOME=C:j2sdkCATALINA_HOME=D:tomcat4 (你的Tomcat安裝目錄)這樣就安裝好了,啟動Tomcat運行CATALINA_HOMEbinstartup.bat,關(guān)閉Tomcat運行shutdown.bat腳本。Tomcat啟動以后,默認(rèn)使用8080

6、端口,因此可以用瀏覽器訪問http:/localhost:8080來測試Tomcat是否正常啟動。Tomcat提供了兩個Web界面的管理工具,URL分別是:http:/localhost:8080/admin/index.jsp http:/localhost:8080/manager/html 在啟用這兩個管理工具之前,先需要手工配置一下管理員用戶和口令。用一個文本工具打開CATALINA_HOMEconftomcat-users.xml這個文件,加入如下幾行:<role rolename="manager"/><role rolename="

7、admin"/><user username="robbin" password="12345678" roles="admin,manager,tomcat"/>這樣用戶“robbin”就具備了超級管理員權(quán)限。重新啟動Tomcat以后,你就可以使用該用戶來登陸如上的兩個管理工具,通過Web方式進行Tomcat的配置和管理了。2、 BEA WeblogicWeblogic可以到BEA的網(wǎng)站上免費注冊之后下載到最新的Weblogic8.1企業(yè)版,License可以免費使用1年時間,其實這已經(jīng)完全足夠了。Web

8、logic的下載連接: 。3、 IBM WebshpereWebsphere同樣可以下載到免費的試用版本,到IBM的developerWorks網(wǎng)站可以看到Websphere試用產(chǎn)品的下載和相關(guān)的Websphere的資料,developerWorks中文網(wǎng)站的連接是: ,Websphere的下載連接: 。4四、 Java應(yīng)用的運行環(huán)境Java的應(yīng)用可以簡單分為以下幾個方面:1、 Java的桌面應(yīng)用桌面應(yīng)用一般僅僅需要JRE的支持就足夠了。2、 Java Web應(yīng)用Java的Web應(yīng)用至少需要安裝JDK和一個web容器(例如Tomcat),以及一個多用戶數(shù)據(jù)庫,Web應(yīng)用至少分為三層:Brows

9、er層:瀏覽器顯示用戶頁面Web層:運行Servlet/JSPDB層:后端數(shù)據(jù)庫,向Java程序提供數(shù)據(jù)訪問服務(wù)3、 Java企業(yè)級應(yīng)用企業(yè)級應(yīng)用比較復(fù)雜,可以擴展到n層,最簡單情況會分為4層:Browser層:瀏覽器顯示用戶頁面Client層:Java客戶端圖形程序(或者嵌入式設(shè)備的程序)直接和Web層或者EJB層交互Web層:運行Servlet/JSPEJB層:運行EJB,完成業(yè)務(wù)邏輯運算DB層:后端數(shù)據(jù)庫,向Java程序提供數(shù)據(jù)訪問服務(wù)4、 Java嵌入式應(yīng)用Java嵌入式應(yīng)用是一個方興未艾的領(lǐng)域,從事嵌入式開發(fā),需要從Sun下載J2ME開發(fā)包,J2ME包含了嵌入式設(shè)備專用虛擬機KVM,

10、和普通的JDK中包含的JVM有所不同。另外還需要到特定的嵌入式廠商那里下載模擬器。Java Learning Path(二)書籍篇學(xué)習(xí)一門新的知識,不可能指望只看一本,或者兩本書就能夠完全掌握。需要有一個循序漸進的閱讀過程。我推薦Oreilly出版的Java系列書籍。在這里我只想補充一點看法,很多人學(xué)習(xí)Java是從Thinking in Java這本書入手的,但是我認(rèn)為這本書是不適合初學(xué)者的。我認(rèn)為正確的使用這本書的方法應(yīng)該是作為輔助的讀物。Thinking in Java并不是在完整的介紹Java的整個體系,而是一種跳躍式的寫作方法,是一種類似tips的方法來對Java很多知識點進行了深入的

11、分析和解釋。對于初學(xué)者來說,最好是找一本Java入門的書籍,但是比較完整的循序的介紹Java的語法,面向?qū)ο蟮奶匦裕诵念悗斓鹊?,在看這本書的同時,可以同步來看Thinking in Java,來加深對Java的理解和原理的運用,同時又可以完整的了解Java的整個體系。對于Java的入門書籍,蔡學(xué)鏞推薦的是Oreilly的Exploring Java, 2nd Edition 或者Java in a Nutshell,2nd Edition(針對C+背景),我并沒有看過這兩本書。其實我覺得電子工業(yè)出版社的Java 2編程詳解或者Java 2從入門到精通就很不錯。在所有的Java書籍當(dāng)中,其實最

12、最有用的,并不是O'reilly的 Java Serials,真正最最有用處是JDK的Documentation!幾乎你想獲得的所有的知識在Documentation里面全部都有,其中最主要的部分當(dāng)然是Java基礎(chǔ)類庫的API文檔,是按照package來組織的,對于每一個class都有詳細(xì)的解釋,它的繼承關(guān)系,是否實現(xiàn)了某個接口,通常用在哪些場合,還可以查到它所有的public的屬性和方法,每個屬性的解釋,意義,每個方法的用途,調(diào)用的參數(shù),參數(shù)的意義,返回值的類型,以及方法可能拋出的異常等等??梢赃@樣來說,所有關(guān)于Java編程方面的書籍其實都不過是在用比較通俗易懂的語言,和良好的組織方

13、式來介紹Documentation里面的某個package里面包含的一些類的用法而已。所以萬變不離其宗,如果你有足夠的能力來直接通過Documentation來學(xué)習(xí)Java的類庫,那么基本上就不需要看其他的書籍了。除此之外,Documentation也是編程必備的手冊,我的桌面上有三個Documentation的快捷方式,分別是J2SDKJava Learning Path(三)過程篇每個人的學(xué)習(xí)方法是不同的,一個人的方法不見得適合另一個人,我只能是談自己的學(xué)習(xí)方法。因為我學(xué)習(xí)Java是完全自學(xué)的,從來沒有問過別人,所以學(xué)習(xí)的過程基本上完全是自己摸索出來的。我也不知道這種方法是否是比較好的方法

14、,只能給大家提供一點參考了。學(xué)習(xí)Java的第一步是安裝好JDK,寫一個Hello JWorld, 其實JDK的學(xué)習(xí)沒有那么簡單,關(guān)于JDK有兩個問題是很容易一直困擾Java程序員的地方:一個是CLASSPATH的問題,其實從原理上來說,是要搞清楚JRE的ClassLoader是如何加載Class的;另一個問題是package和import問題,如何來尋找類的路徑問題。把這兩個問題摸索清楚了,就掃除了學(xué)習(xí)Java和使用JDK的最大障礙。推薦看一下王森的Java深度歷險,對這兩個問題進行了深入的探討。第二步是學(xué)習(xí)Java的語法。Java的語法是類C+的,基本上主流的編程語言不是類C,就是類C+的,

15、沒有什么新東西,所以語法的學(xué)習(xí),大概就是半天的時間足夠了。唯一需要注意的是有幾個不容易搞清楚的關(guān)鍵字的用法,public,protected,private,static,什么時候用,為什么要用,怎么用,這可能需要有人來指點一下,我當(dāng)初是完全自己琢磨出來的,花了很久的時間。不過后來我看到Thinking in Java這本書上面是講了這些概念的。第三步是學(xué)習(xí)Java的面向?qū)ο蟮木幊陶Z言的特性的地方。比如繼承,構(gòu)造器,抽象類,接口,方法的多態(tài),重載,覆蓋,Java的異常處理機制。對于一個沒有面向?qū)ο笳Z言背景的人來說,我覺得這個過程需要花很長很長時間,因為學(xué)習(xí)Java之前沒有C+的經(jīng)驗,只有C的經(jīng)

16、驗,我是大概花了一個月左右吧,才徹底把這些概念都搞清楚,把書上面的例子反復(fù)的揣摩,修改,嘗試,把那幾章內(nèi)容反復(fù)的看過來,看過去,看了不下5遍,才徹底領(lǐng)悟了。不過我想如果有C+經(jīng)驗的話,應(yīng)該一兩天時間足夠了。那么在這個過程中,可以多看看Thinking in Java這本書,對面向?qū)ο蟮闹v解非常透徹。可惜的是我學(xué)習(xí)的時候,并沒有看到這本書,所以自己花了大量的時間,通過自己的嘗試和揣摩來學(xué)會的。第四步第五步第六步,Java Web 編程Web編程的核心是HTTP協(xié)議,HTTP協(xié)議和Java無關(guān),如果不熟悉HTTP協(xié)議的話,雖然也可以學(xué)好Servlet/JSP編程,但是達(dá)不到舉一反三,一通百通的境界

17、。所以HTTP協(xié)議的學(xué)習(xí)是必備的。如果熟悉了HTTP協(xié)議的話,又有了Java編程的良好的基礎(chǔ),學(xué)習(xí)Servlet/JSP簡直易如反掌,我學(xué)習(xí)Servlet/JSP就用了不到一周的時間,然后就開始用JSP來做項目了。在Servlet/JSP的學(xué)習(xí)中,重頭仍然是Servlet Documentation。Servlet API最常用的類很少,花比較少的時間就可以掌握了。把這些類都看一遍,多寫幾個例子試試。Servlet/JSP編程本質(zhì)就是在反復(fù)調(diào)用這些類來通過HTTP協(xié)議在Web Server和Brower之間交談。另外對JSP,還需要熟悉幾個常用JSP的標(biāo)記,具體的寫法記不住的話,臨時查就是了。

18、此外Java Web編程學(xué)習(xí)的重點要放在Web Application的設(shè)計模式上,如何進行業(yè)務(wù)邏輯的分析,并且進行合理的設(shè)計,按照MVC設(shè)計模式的要求,運用Servlet和JSP分別完成不同的邏輯層,掌握如何在Servlet和JSP之間進行流程的控制和數(shù)據(jù)的共享,以及Web Application應(yīng)該如何配置和部署。第七步Java Learning Path(四) 方法篇Java作為一門編程語言,最好的學(xué)習(xí)方法就是寫代碼。當(dāng)你學(xué)習(xí)一個類以后,你就可以自己寫個簡單的例子程序來運行一下,看看有什么結(jié)果,然后再多調(diào)用幾個類的方法,看看運行結(jié)果,這樣非常直觀的把類給學(xué)會了,而且記憶非常深刻。然后不應(yīng)

19、該滿足把代碼調(diào)通,你應(yīng)該想想看如果我不這樣寫,換個方式,再試試行不行。記得哪個高人說過學(xué)習(xí)編程就是個破壞的過程,把書上的例子,自己學(xué)習(xí)Documentation編寫的例子在運行通過以后,不斷的嘗試著用不同的方法實現(xiàn),不斷的嘗試破壞代碼的結(jié)構(gòu),看看它會有什么結(jié)果。通過這樣的方式,你會很徹底的很精通的掌握J(rèn)ava。舉個例子,我們都編過Hello World很多初學(xué)者不是很理解為什么main方法一定要這樣來定義public static void main(String args),能不能不這樣寫?包括我剛學(xué)習(xí)Java的時候也有這樣的疑問。想知道答案嗎?很簡單,你把main改個名字運行一下,看看報什

20、么錯誤,然后根據(jù)出錯信息進行分析;把main的public取掉,在試試看,報什么錯誤;static去掉還能不能運行;不知道m(xù)ain方法是否一定要傳一個String數(shù)組的,把String改掉,改成int,或者String試試看;不知道是否必須寫args參數(shù)名稱的,也可以把args改成別的名字,看看運行結(jié)果如何。我當(dāng)初學(xué)習(xí)Java的時候就是這樣做的,把Hello World程序反復(fù)改了七八次,不斷運行,分析運行結(jié)果,最后就徹底明白為什么了main方法是這樣定義的了。此外,我對于staic,public,private,Exception,try catch finally等等等等一開始都不是很懂,

21、都是把參考書上面的例子運行成功,然后就開始破壞它,不斷的根據(jù)自己心里面的疑問來重新改寫程序,看看能不能運行,運行出來是個什么樣子,是否可以得到預(yù)期的結(jié)果。這樣雖然比較費時間,不過一個例子程序這樣反復(fù)破壞幾次之后。我就對這個相關(guān)的知識徹底學(xué)通了。有時候甚至故意寫一些錯誤的代碼來運行,看看能否得到預(yù)期的運行錯誤。這樣對于編程的掌握是及其深刻的。其中特別值得一提的是JDK有一個非常棒的調(diào)試功能,-verbose,javac verbose 以及其它很多JDK工具都有這個選項,-verbose 可以顯示在命令執(zhí)行的過程中,JVM都依次加載哪里Class,通過這些寶貴的調(diào)試信息,可以幫助我們分析出JVM

22、在執(zhí)行的過程中都干了些什么。另外,自己在學(xué)習(xí)過程中,寫的很多的這種破壞例程,應(yīng)該有意識的分門別類的保存下來,在工作中積累的典型例程也應(yīng)該定期整理,日積月累,自己就有了一個代碼庫了。遇到類似的問題,到代碼庫里面 Copy & Paste ,Search & Replace,就好了,極大提高了開發(fā)速度。最理想的情況是把一些通用的例程自己再抽象一層,形成一個通用的類庫,封裝好。那么可復(fù)用性就更強了。所以我覺得其實不是特別需要例程的,自己寫的破壞例程就是最好的例子,如果你實在對自己寫的代碼不放心的話,我強烈推薦你看看JDK基礎(chǔ)類庫的Java源代碼。在JDK安裝目錄下面會有一個src.z

23、ip,解開來就可以完整的看到整個JDK基礎(chǔ)類庫,也就是rt.jar的Java源代碼,你可以參考一下Sun是怎么寫Java程序的,規(guī)范是什么樣子的。我自己在學(xué)習(xí)Java的類庫的時候,當(dāng)有些地方理解的不是很清楚的時候,或者想更加清晰的理解運作的細(xì)節(jié)的時候,往往會打開相應(yīng)的類的源代碼,通過看源代碼,所有的問題都會一掃而空。Java Learning Path(五)資源篇 (英文)Sun的Java網(wǎng)站,是一個應(yīng)該經(jīng)常去看的地方。不用多說。 IBM的developerWorks網(wǎng)站,英語好的直接去英文主站點看。這里不但是一個極好的面向?qū)ο蟮姆治鲈O(shè)計網(wǎng)站,也是Web Services,Java,Linux

24、極好的網(wǎng)站。強烈推薦! (英文)關(guān)于Java很多新技術(shù)的討論和新聞。想多了解Java的方方面面的應(yīng)用,這里比較好。 BEA的開發(fā)者園地,BEA作為最重要的App Server廠商,有很多獨到的技術(shù),在Weblogic上做開發(fā)的朋友不容錯過。 (英文)TheServerSide是一個著名的專門面向Java Server端應(yīng)用的網(wǎng)站。 JSP技術(shù)網(wǎng)站,有相當(dāng)多的Java方面的文章和資源。SourgeForge是一個開放源代碼軟件的大本營,其中也有非常非常豐富的Java的開放源代碼的著名的軟件。附:java入門與加深FAQ一、準(zhǔn)備篇1 什么是Java、Java2、JDK?JDK后面的1.3、版本號又

25、是怎么回事?答:Java是一種通用的,并發(fā)的,強類型的,面向?qū)ο蟮木幊陶Z言(摘自Java規(guī)范第二版) JDK是Sun公司分發(fā)的免費Java開發(fā)工具,正式名稱為J2SDK(Java2 Software Develop Kit)。2 什么是JRE/J2RE?答:J2RE是Java2 Runtime Environment,即Java運行環(huán)境,有時簡稱JRE。如果你只需要運行Java程序或Applet,下載并安裝它即可。如果你要自行開發(fā)Java軟件,請下載JDK。在JDK中附帶有J2RE。注意:由于Microsoft對Java的支持不完全,請不要使用IE自帶的虛擬機來運行Applet,務(wù)必安裝一個J

26、2RE或JDK。3 學(xué)習(xí)Java用什么工具比較好?答:作者建議首先使用JDK+文本編輯器,這有助你理解下列幾個基礎(chǔ)概念:path,classpath,package并熟悉基本命令:javac和java。并且下載和你的JDK版本一致的API幫助。如果你不確定類或函數(shù)的用法,請先查閱API而不是發(fā)貼求助。當(dāng)你熟悉Java之后,你可以考慮換一個IDE。很多人推薦JCreator,實際上JCreator的功能還 是很弱的。作者推薦eclipse,下載網(wǎng)因eclispe是免費的.4 學(xué)習(xí)Java有哪些好的參考書?答:作者首先推薦Thinking in Java,中文名Java編程思想,有中文版。該書第一

27、章介紹了很多面向?qū)ο蟮木幊趟枷耄鳛樾率謶?yīng)當(dāng)認(rèn)真閱讀。除此以外,O´relly出版社和Wrox出版社的書也不錯。作者本人不喜歡大陸作者的書。也許你覺得英文太難,但是網(wǎng)上大多數(shù)資料都是英文的。另外,你需要經(jīng)常查閱API,而那也是英文的。5 Java和C+哪個更好?答:這個問題是一個很不恰當(dāng)?shù)膯栴}。你應(yīng)該問:Java和C+哪個更適用于我的項目?如果你不需要跨平臺,不需要分布式,要強調(diào)程序的運行速度,C+更為適用。反之?你應(yīng)當(dāng)考慮Java。6 什么是J2SE/J2EE/J2ME?答:J2SE就是一般的Java。J2ME是針對嵌入式設(shè)備的,比如Java手機,它有自己的SDK。而J2EE使用J

28、2SE的SDK。J2EE規(guī)范更多的是對J2EE服務(wù)器的要求和開發(fā)人員的約束。詳情見后繼"J2EE FAQ"。二、命令篇7 我寫了第一個Java程序,應(yīng)該如何編譯/運行?答:首先請將程序保存為xxx.java文件,然后在dos窗口下使用javac xxx.java命令,你會發(fā)現(xiàn)該目錄下多了一個xxx.class文件,再使用java xxx命令,你的java程序就開始運行了。8 我照你說的做了,但是出現(xiàn)什么"´javac´ 不是內(nèi)部或外部命令,也不是可運行的程序或批處理文件。"。答:你遇到了path問題。操作系統(tǒng)在一定的范圍(path)內(nèi)

29、搜索javac.exe,但是沒能找到。請編輯你的操作系統(tǒng)環(huán)境變量,新增一個JAVA_HOME變量,設(shè)為你JDK的安裝目錄,再編輯Path變量,加上一項 %JAVA_HOME%bin。然后關(guān)掉并新開一個dos窗口,你就可以使用javac和java命令了。9 環(huán)境變量怎么設(shè)置?答:請向身邊會設(shè)的人咨詢。10111213 我沒有聲明任何package會怎么樣?答:你的類被認(rèn)為放在默認(rèn)包中。這時全名和短名是一致的。14 在一個類中怎么使用其他類?答:如果你使用java.lang包中的類,不用做任何事。如果你使用其他包中的類,使用import package1.class1; 或 import pack

30、age2.*;這里.*表示引入這個包中的所有類。然后在程序中你可以使用其他類的短名。如果短名有沖突,使用全名來區(qū)分。15 我用了package的時候顯示"NoClassDefFoundError",但是我把所有package去掉的時候能正常運行。答:將你的java文件按包名存放。比如你的工作目錄是/work,你的類是package1.class1,那么將它存放為/work/package1/class1.java。如果沒有聲明包,那么直接放在/work下。在/work下執(zhí)行javac package1/class1.java,再執(zhí)行java package1.class1,

31、你會發(fā)現(xiàn)一切正常。另外,你可以考慮開始使用IDE。16 我想把java編譯成exe文件,該怎么做?答:JDK只能將java源文件編譯為class文件。class文件是一種跨平臺的字節(jié)碼,必須依賴平臺相關(guān)的JRE來運行。Java以此來實現(xiàn)跨平臺,有些開發(fā)工具可以將java文件編譯為exe文件。作者反對這種做法,因為這樣就取消了跨平臺性。如果你確信你的軟件只在Windows平臺上運行,你可以考慮使用C+/C#來編程。17 我在編譯的時候遇到什么"deprecated API",是什么意思?答:所謂deprecated是指已經(jīng)?時,但是為了向前兼容起見仍然保留的方法,這些方法可能

32、會在以后取消支持。你應(yīng)當(dāng)改用較新的方法。一般在API里面會說明你應(yīng)當(dāng)用什么方法來代替之。三、I/O篇18 我怎么給java程序加啟動參數(shù),就像dir /p/w那樣?答:還記得public static void main(String args)嗎?這里的args就是你的啟動參數(shù)。在運行時你輸入java package1.class1 -arg1 -arg2,args中就會有兩個String,一個是arg1,另一個是arg2。19 我怎么從鍵盤輸入一個int/double/字符串?答:java的I/O操作比C+要復(fù)雜一點。如果要從鍵盤輸入,樣例代碼如下:BufferedReader cin =

33、 new BufferedReader( new InputStreamReader( System.in ) );String s = cin.readLine();這樣你就獲得了一個字符串,如果你需要數(shù)字的話再加上:int n = Integer.parseInt( s );或者 double d = Double.parseDouble( s );20 我怎么輸出一個int/double/字符串?答:在程序開始寫:PrintWriter cout = new PrintWriter( System.out );需要時寫:cout.print(n); 或者cout.println(&quo

34、t;hello")等等。2122 我怎么從文件輸入一個int/double/字符串?答:類似于從鍵盤輸入,只不過換成BufferedReader fin = new BufferedReader( new FileReader(" myFileName " ) );PrintWriter fout = new PrintWriter( new FileWriter(" myFileName " ) );另外如果你還沒下載API,請開始下載并閱讀java.io包中的內(nèi)容。2324 怎么判斷要讀的文件已經(jīng)到了盡頭?答:你肯定沒有認(rèn)真看API。在Re

35、aer的read方法中明確說明返回-1表示流的結(jié)尾。四、 關(guān)鍵字篇25 java里面怎么定義宏?答:java不支持宏,因為宏代換不能保證類型安全。如果你需要定義常量,可以將它定義為某個類的static final成員。參見26和30。26 java里面沒法用const。答:你可以用final關(guān)鍵字。例如 final int m = 9。被聲明為final的變量不能被再次賦值。也可以用于聲明方法或類,被聲明為final的方法或類不能被繼承。注意const是java的保留字以備擴充。27 java里面也不能用goto。答:甚至在面向過程的語言中你也可以完全不用goto。請檢查你的程序流程是否合理。

36、如果你需要從多層循環(huán)中迅速跳出,java增強了(和C+相比)break和continue的功能。例如:outer :while( . )inner :for( . ). break inner; . continue outer; .和const一樣,goto也是java的保留字以備擴充。28 java里面能不能重載操作符?答:不能。String的+號是唯一一個內(nèi)置的重載操作符。你可以通過定義接口和方法來實現(xiàn)類似功能。29 我new了一個對象,但是沒法delete掉它。答:java有自動內(nèi)存回收機制,即所謂Garbarge Collector。你再也不用擔(dān)心指針錯誤。30 我想知道為什么mai

37、n方法必須被聲明為public static?答:聲明為public是為了這個方法可以被外部調(diào)用,詳情見面向?qū)ο笃?7。static是為了將某個成員變量/方法關(guān)聯(lián)到類(class)而非實例(instance)。你不需要創(chuàng)建一個對象就可以直接使用這個類的static成員,在A類中調(diào)用B類的static成員可以使用B.staticMember的寫法。注意一個類的static成員變量是唯一的,被所有該類對象所共享的。31 throw和throws有什么不同?答:throws用于聲明一個方法會拋出哪些異常。而throw是在方法體中實際執(zhí)行拋出異常的動作。如果你在方法中throw一個異常,卻沒有在方法聲

38、明中聲明之,編譯器會報錯。注意Error和RuntimeException的子類是例外,無需特別聲明。32 什么是異常?答:異常最早在Ada語言中引入,用于在程序中動態(tài)處理錯誤并恢復(fù)。你可以在方法中攔截底層異常并處理之,也可以拋給更高層的模塊去處理。你也可以拋出自己的異常指示發(fā)生了某些不正常情況。常見的攔截處理代碼如下:try. /以下是可能發(fā)生異常的代碼. /異常被拋出,執(zhí)行流程中斷并轉(zhuǎn)向攔截代碼。.catch(Exception1 e) /如果Exception1是Exception2的子類并要做特別處理,應(yīng)排在前面/發(fā)生Exception1時被該段攔截catch(Exception2 e

39、)/發(fā)生Exception2時被該段攔截finally /這是可選的/無論異常是否發(fā)生,均執(zhí)行此段代碼33 final和finally有什么不同?答:final請見26。finally用于異常機制,參見32。五、 面向?qū)ο笃?4 extends和implements有什么不同?答:extends用于(單)繼承一個類(class),而implements用于實現(xiàn)一個接口(interface)。interface的引入是為了部分地提供多繼承的功能。在interface中只需聲明方法頭,而將方法體留給實現(xiàn)的class來做。這些實現(xiàn)的class的實例完全可以當(dāng)作interface的實例來對待。有趣的是

40、在interface之間也可以聲明為extends(單繼承)的關(guān)系。35 java怎么實現(xiàn)多繼承?答:java不支持顯式的多繼承。因為在顯式多繼承的語言例如c+中,會出現(xiàn)子類被迫聲明祖先虛基類構(gòu)造函數(shù)的問題,而這是違反面向?qū)ο蟮姆庋b性原則的。java提供了interface和implements關(guān)鍵字來部分地實現(xiàn)多繼承。參見34。36 abstract是什么?答:被聲明為abstract的方法無需給出方法體,留給子類來實現(xiàn)。而如果一個類中有abstract方法,那么這個類也必須聲明為abstract。被聲明為abstract的類無法實例化,盡管它可以定義構(gòu)造方法供子類使用。37 public,

41、protected,private有什么不同?答:這些關(guān)鍵字用于聲明類和成員的可見性。public成員可以被任何類訪問,protected成員限于自己和子類訪問,private成員限于自己訪問。Java還提供了第四種的默認(rèn)可見性,一般稱為package private,當(dāng)沒有任何public,protected,private修飾符時,成員是同一包內(nèi)可見。類可以用public或默認(rèn)來修飾。38 Override和Overload有什么不同?答:Override是指父類和子類之間方法的繼承關(guān)系,這些方法有著相同的名稱和參數(shù)類型。Overload是指同一個類中不同方法(可以在子類也可以在父類中定義

42、)間的關(guān)系,這些方法有著相同的名稱和不同的參數(shù)類型。39 我繼承了一個方法,但現(xiàn)在我想調(diào)用在父類中定義的方法。答:用super.xxx()可以在子類中調(diào)用父類方法。40 我想在子類的構(gòu)造方法中調(diào)用父類的構(gòu)造方法,該怎么辦?答:在子類構(gòu)造方法的第一行調(diào)用super(.)即可。41 我在同一個類中定義了好幾個構(gòu)造方法并且想在一個構(gòu)造方法中調(diào)用另一個。答:在構(gòu)造方法第一行調(diào)用this(.)。42 我沒有定義構(gòu)造方法會怎么樣?答:自動獲得一個無參數(shù)的構(gòu)造方法。43 我調(diào)用無參數(shù)的構(gòu)造方法失敗了。答:如果你至少定義了一個構(gòu)造方法,就不再有自動提供的無參數(shù)的構(gòu)造方法了。你需要顯式定義一個無參數(shù)的構(gòu)造方法。44 我該怎么定義類似于C+中的析構(gòu)方法(destructor)?答:提供一個void finalize()方法。在Garbarge Collector回收該對象時會調(diào)用該方法。注意實際上你很難判斷一個對象會在什么時候被回收。作者從未感到需要提供該方法。45 我想將一個父類對象轉(zhuǎn)換成一個子類對象該怎么做?答:強制類型轉(zhuǎn)換。如public void meth(A a)B b = (B)a;如果a實際上并不是B的實例,會拋出ClassCastException。所以請確保a確實是B的實例。46 其實我不確定a是不是B的實

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論