版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章Java概述
第2章Java程序設(shè)計(jì)基礎(chǔ)
第3章Java流程控制語句
第4章數(shù)組與字符串
第5章面向?qū)ο蟪绦蛟O(shè)計(jì)
第6章異常處理
第7章多線程程序設(shè)計(jì)第8章數(shù)據(jù)庫編程
第9章輸入/輸出處理
第10章網(wǎng)絡(luò)編程全套可編輯PPT課件1.1Java語言概述
1.2Java開發(fā)環(huán)境
1.3Eclipse使用介紹1.1Java語言概述1.1.1Java語言的背景Java是由SunMicrosystems開發(fā)的編程語言,使用它可以在不同的硬件系統(tǒng)、不同操作平臺(tái)的網(wǎng)絡(luò)環(huán)境中開發(fā)軟件。Java正在逐步成為基于Internet應(yīng)用的主要開發(fā)語言,它徹底改變了應(yīng)用軟件的開發(fā)模式,帶來了自PC誕生以來又一次技術(shù)革命,為迅速發(fā)展的信息世界增添了新的活力。1.?Java的產(chǎn)生SunMicrosystems的Java語言開發(fā)小組成立于1991年,其目的是開拓消費(fèi)類電子產(chǎn)品市場。SunMicrosystems內(nèi)部人員把這個(gè)項(xiàng)目稱為Green,該小組的領(lǐng)導(dǎo)人是JamesGosling。Gosling在開始寫Java時(shí),并不局限于擴(kuò)充語言機(jī)制本身,而注重于語言所運(yùn)行的軟硬件環(huán)境。他要建立一個(gè)系統(tǒng),這個(gè)系統(tǒng)運(yùn)行于一個(gè)巨大的、分布式的、異構(gòu)的網(wǎng)絡(luò)環(huán)境中,可以完成各電子設(shè)備之間的通信與協(xié)同工作。Gosling在設(shè)計(jì)中采用了虛擬機(jī)的方式,每個(gè)操作系統(tǒng)均有一個(gè)解釋器。Java程序在虛擬機(jī)上運(yùn)行,于是Java就成了平臺(tái)無關(guān)語言,這樣便保證了軟件良好的可移植性。2.Java語言的轉(zhuǎn)折點(diǎn)Java最初并沒有受到業(yè)界的關(guān)注,1994年秋天,Gosling完成了WebRunner的開發(fā)工作。WebRunner是HotJava的前身,這個(gè)原型系統(tǒng)展示了Java可能帶來的廣闊市場前景。后來WebRunner改名為HotJava,于1995年5月23日發(fā)布,在產(chǎn)業(yè)界引起了巨大的轟動(dòng),Java的地位也隨之得到肯定。又經(jīng)過一年的試用和改進(jìn),Java1.0版于1996年年初正式發(fā)布。3.?Java帶來的影響Java出現(xiàn)時(shí)間不長,就被業(yè)界廣泛接受,多家大公司紛紛購買了Java的許可證。Microsoft還在其Web瀏覽器Explorer3.0版中增加了對(duì)Java的支持。另外,眾多的軟件開發(fā)商也開發(fā)了許多支持Java的軟件產(chǎn)品,如Borland公司的基于Java的快速應(yīng)用程序開發(fā)環(huán)境JBuilder和IBM公司的開源項(xiàng)目Eclipse等。數(shù)據(jù)庫廠商如Sybase、Oracle、MSSQLServer等都開發(fā)了支持Java的JDBC驅(qū)動(dòng)。Java應(yīng)用程序可以運(yùn)行在異質(zhì)的機(jī)器或操作系統(tǒng)之上,甚至于電冰箱、烤面包箱、防盜電子設(shè)備之中,即應(yīng)用程序之間可以交換數(shù)據(jù)。Java的出現(xiàn)是計(jì)算機(jī)信息交換的一個(gè)重要里程碑。1.1.2Java語言的特性Java的特點(diǎn)包括:簡單、面向?qū)ο蟆⒎植际?、健壯、結(jié)構(gòu)中立、安全、可移植、解釋性、高性能、多線程、動(dòng)態(tài)和Unicode等。1.簡單Java最初是為對(duì)家用電器進(jìn)行集成控制而設(shè)計(jì)的一種語言,因此它必須簡單明了。Java語言的簡單性主要體現(xiàn)在以下三個(gè)方面:(1)?Java的風(fēng)格類似于C++。(2)?Java摒棄了C++?中容易引發(fā)程序錯(cuò)誤的地方。(3)?Java提供了豐富的類庫。2.面向?qū)ο竺嫦驅(qū)ο罂梢哉f是Java最重要的特性。Java語言的設(shè)計(jì)完全是面向?qū)ο蟮模恢С诸愃艭語言那樣的面向過程的程序設(shè)計(jì)技術(shù)。Java支持靜態(tài)和動(dòng)態(tài)風(fēng)格的代碼繼承及重用。單從面向?qū)ο蟮奶匦詠砜?,Java類似于SmallTalk,但其他特性,尤其是適用于分布式計(jì)算環(huán)境的特性遠(yuǎn)遠(yuǎn)超越了SmallTalk。3.分布式Java包括一個(gè)支持HTTP和FTP等基于TCP/IP協(xié)議的子庫。因此,Java應(yīng)用程序可憑借URL打開并訪問網(wǎng)絡(luò)上的對(duì)象,其訪問方式與訪問本地文件系統(tǒng)幾乎完全相同。為分布環(huán)境尤其是Internet提供的動(dòng)態(tài)內(nèi)容無疑是一項(xiàng)非常宏偉的任務(wù),但Java的語法特性使我們可以很容易地實(shí)現(xiàn)這項(xiàng)目標(biāo)。4.健壯Java致力于檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤。類型檢查可幫助程序員檢查出許多開發(fā)早期出現(xiàn)的錯(cuò)誤。Java由虛擬機(jī)操作內(nèi)存,程序員不能直接操作內(nèi)存,這減少了由程序員自己操作內(nèi)存而出錯(cuò)的可能性。Java還實(shí)現(xiàn)了真數(shù)組,避免了覆蓋數(shù)據(jù)的可能。這些功能特性大大縮短了開發(fā)Java應(yīng)用程序的周期。Java提供了Null指針檢測、數(shù)組邊界檢測、異常出口、字節(jié)碼校驗(yàn)等功能。5.結(jié)構(gòu)中立為了使Java作為網(wǎng)絡(luò)的一個(gè)整體,Java源程序被編譯成一種高層次的與機(jī)器無關(guān)的byte-code格式語言,即字節(jié)碼,這種代碼被設(shè)計(jì)在虛擬機(jī)上運(yùn)行。只要有Java虛擬機(jī)的機(jī)器都能執(zhí)行這種中間代碼,并由機(jī)器相關(guān)的運(yùn)行調(diào)試器實(shí)現(xiàn)執(zhí)行。6.安全Java的安全性可從兩個(gè)方面得到保證。一方面,在Java語言里,指針和釋放內(nèi)存等C++功能被刪除,避免了非法內(nèi)存操作;另一方面,當(dāng)Java用來創(chuàng)建瀏覽器時(shí),語言功能和瀏覽器本身提供的功能結(jié)合起來,使它更安全。Java語言在機(jī)器上執(zhí)行前,要經(jīng)過很多次的測試。它經(jīng)過代碼校驗(yàn),檢查代碼段的格式,檢測指針操作、對(duì)象操作是否過分以及試圖改變一個(gè)對(duì)象的類型。7.可移植Java編譯器產(chǎn)生的目標(biāo)代碼(J-Code)是針對(duì)一種并不存在的CPU—Java虛擬機(jī)(JavaVirtualMachine),而不是某一實(shí)際的CPU。Java虛擬機(jī)能掩蓋不同CPU之間的差別,使J-Code運(yùn)行于任何具有Java虛擬機(jī)的機(jī)器上。針對(duì)Internet應(yīng)用而設(shè)計(jì)的Java虛擬機(jī)的特別之處在于它能產(chǎn)生安全的不受病毒威脅的目標(biāo)代碼。正是由于Internet對(duì)安全特性的特別要求才使JVM能夠迅速被人們接受。當(dāng)今主流的操作系統(tǒng)如OS/2、MacOS、Windows都已經(jīng)提供對(duì)J-Code的支持。作為一種虛擬的CPU,Java虛擬機(jī)對(duì)于源代碼(SourceCode)來說是獨(dú)立的。不僅可以用Java語言來生成J-Code,也可以用Ada95來生成。源代碼一經(jīng)轉(zhuǎn)換成J-Code,Java虛擬機(jī)就能夠執(zhí)行而不區(qū)分它是由哪種源代碼生成的。這樣做的結(jié)果就是提高CPU的可移植性。將源程序編譯為J-Code的好處在于可運(yùn)行于各種機(jī)器上,而缺點(diǎn)是它不如本機(jī)代碼運(yùn)行的速度快。同體系結(jié)構(gòu)無關(guān)的特性使Java應(yīng)用程序可以在配備了Java解釋器和運(yùn)行環(huán)境的任何計(jì)算機(jī)系統(tǒng)上運(yùn)行,這成為Java應(yīng)用軟件便于移植的良好基礎(chǔ)。但僅僅如此還不夠,如果基本數(shù)據(jù)類型設(shè)計(jì)依賴于具體實(shí)現(xiàn),也將為程序的移植帶來很大不便。通過定義獨(dú)立于平臺(tái)的基本數(shù)據(jù)類型及其運(yùn)算,Java數(shù)據(jù)得以在任何硬件平臺(tái)上保持一致。8.解釋性Java解釋器(運(yùn)行系統(tǒng))能直接運(yùn)行目標(biāo)代碼指令。鏈接程序通常比編譯程序所需資源少,所以程序員可以在創(chuàng)建源程序上花費(fèi)更多的時(shí)間。9.高性能如果解釋器速度不慢,Java可以在運(yùn)行時(shí)直接將目標(biāo)代碼翻譯成機(jī)器指令。SunMicrosystems用直接解釋器一秒鐘內(nèi)可調(diào)用300?000個(gè)過程,翻譯目標(biāo)代碼的速度與C/C++的性能沒什么區(qū)別。10.多線程多線程功能使在一個(gè)程序里可同時(shí)執(zhí)行多個(gè)小任務(wù)。線程有時(shí)也稱小進(jìn)程,是一個(gè)大進(jìn)程里分出來的小的獨(dú)立進(jìn)程。因?yàn)镴ava可實(shí)現(xiàn)多線程技術(shù),所以比C和C++?更健壯。多線程帶來的更大好處是具有更好的交互性能和實(shí)時(shí)控制性能。當(dāng)然,實(shí)時(shí)控制性能還取決于系統(tǒng)本身,在開發(fā)難易程度和性能上都比單線程要好。11.動(dòng)態(tài)Java的動(dòng)態(tài)特性是其面向?qū)ο笤O(shè)計(jì)方法的發(fā)展。它允許程序動(dòng)態(tài)地裝入運(yùn)行過程中所需要的類,Java編譯器不是將對(duì)實(shí)例變量和成員函數(shù)的引用編譯為數(shù)值引用,而是將符號(hào)引用信息在字節(jié)碼中保存下來并傳遞給解釋器,再由解釋器在完成動(dòng)態(tài)連接類后,將符號(hào)引用信息轉(zhuǎn)換為數(shù)值偏移量。這樣,一個(gè)在存儲(chǔ)器生成的對(duì)象不在編譯過程中決定,而是延遲到運(yùn)行時(shí)由解釋器來確定,于是對(duì)類中的變量和方法進(jìn)行更新時(shí)就不至于影響現(xiàn)存的代碼。解釋執(zhí)行字節(jié)碼時(shí),這種符號(hào)信息的查找和轉(zhuǎn)換過程僅在一個(gè)新的名字出現(xiàn)時(shí)才進(jìn)行一次,隨后代碼便可以全速執(zhí)行。在運(yùn)行時(shí)確定引用的好處是可以使用已被更新的類,而不必?fù)?dān)心會(huì)影響原有的代碼。如果程序連接了網(wǎng)絡(luò)中另一系統(tǒng)中的某一類,該類的所有者也可以自由地對(duì)該類進(jìn)行更新,而不會(huì)使任何引用該類的程序崩潰。Java還簡化了使用一個(gè)升級(jí)的或全新的協(xié)議方法。如果系統(tǒng)運(yùn)行Java程序時(shí)遇到了不知怎樣處理的程序,Java能自動(dòng)下載程序員所需要的功能程序。12.?UnicodeJava使用Unicode作為它的標(biāo)準(zhǔn)字符,這項(xiàng)特性使得Java的程序能在不同語言的平臺(tái)上撰寫和執(zhí)行。簡單地說,可以把程序中的變量、類別名稱用中文來表示,當(dāng)程序移植到其他語言平臺(tái)時(shí),還可以正常地執(zhí)行。Java也是目前所有計(jì)算機(jī)語言當(dāng)中,唯一使用Unicode的語言。1.1.3Java和C、C++?的比較1.指針Java語言使編程者無法使用指針來直接訪問內(nèi)存,并且增添了自動(dòng)的內(nèi)存管理功能,從而有效地防止了C/C++?語言中指針操作失誤。但并不是說Java沒有指針,而是虛擬機(jī)內(nèi)部使用了指針,編程者不得使用,這提高了Java程序的安全性。2.多重繼承Java不支持多重繼承,但允許一個(gè)類繼承多個(gè)接口(extends?+?implement),既實(shí)現(xiàn)了C++?多重繼承的功能,又避免了C++?中的多重繼承實(shí)現(xiàn)方式所帶來的諸多不便。3.?dāng)?shù)據(jù)類型及類Java是完全面向?qū)ο蟮恼Z言,所有函數(shù)和變量都必須是類的一部分。除了基本數(shù)據(jù)類型之外,其余的都作為類對(duì)象,包括數(shù)組。對(duì)象將數(shù)據(jù)和方法結(jié)合起來,把它們封裝在類中,這樣每個(gè)對(duì)象都可實(shí)現(xiàn)自己的特點(diǎn)和行為。此外,Java中取消了C/C++?中的結(jié)構(gòu)和聯(lián)合,消除了不必要的麻煩。4.自動(dòng)內(nèi)存管理Java程序中所有對(duì)象都是用new操作符建立在內(nèi)存堆棧上的。Java自動(dòng)進(jìn)行無用內(nèi)存回收操作,不需要程序員進(jìn)行刪除。Java中當(dāng)一個(gè)對(duì)象不再被使用時(shí),無用內(nèi)存回收器將給它加上標(biāo)簽以示刪除。Java里無用內(nèi)存回收程序是以線程方式在后臺(tái)運(yùn)行的,利用空閑時(shí)間工作。5.操作符重載Java不支持操作符重載。操作符重載被認(rèn)為是C++?的突出特征,在Java中雖然類大體上可以實(shí)現(xiàn)這樣的功能,但操作符重載的方便性仍然丟失了不少。Java語言不支持操作符重載是為了保持Java語言盡可能簡單。6.預(yù)處理功能Java不支持預(yù)處理功能。C/C++?在編譯過程中都有一個(gè)預(yù)編譯階段,即眾所周知的預(yù)處理器。預(yù)處理器為開發(fā)人員提供了方便,但增加了編譯的復(fù)雜性。Java虛擬機(jī)沒有預(yù)處理器,但它提供的引入語句(import)與C++?預(yù)處理器的功能類似。7.對(duì)函數(shù)的支持Java不支持缺省函數(shù)參數(shù),而C++?支持。在C中,代碼組織在函數(shù)中,函數(shù)可以訪問程序的全局變量。C++?增加了類,提供了類算法,該算法是與類相連的函數(shù)。C++?類方法與Java類方法十分相似,然而,由于C++?仍然支持C,所以不能阻止C++?開發(fā)人員使用函數(shù),結(jié)果函數(shù)和方法混合使用使程序比較混亂。Java沒有函數(shù),作為一個(gè)比C++?更純的面向?qū)ο蟮恼Z言,Java強(qiáng)迫開發(fā)人員把所有例行程序包括在類中,事實(shí)上,用方法實(shí)現(xiàn)例行程序可激勵(lì)開發(fā)人員更好地組織編碼。8.字符串C和C++?不支持字符串變量,在C和C++?程序中使用Null終止符代表字符串的結(jié)束。在Java中字符串是用類對(duì)象(String和StringBuffer)來實(shí)現(xiàn)的,這些類對(duì)象是Java語言的核心。用類對(duì)象實(shí)現(xiàn)字符串有以下四個(gè)優(yōu)點(diǎn):(1)在整個(gè)系統(tǒng)中建立字符串和訪問字符串元素的方法是一致的。(2)字符串類是作為Java語言的一部分定義的,而不是作為外加的延伸部分。(3)?Java字符串執(zhí)行運(yùn)行時(shí)檢空,可幫助排除一些運(yùn)行時(shí)發(fā)生的錯(cuò)誤。(4)可對(duì)字符串用“+”進(jìn)行連接操作。9.類型轉(zhuǎn)換在C和C++?中有時(shí)出現(xiàn)數(shù)據(jù)類型的隱含轉(zhuǎn)換,這就涉及自動(dòng)強(qiáng)制類型轉(zhuǎn)換問題。例如,在C++?中可將一浮點(diǎn)值賦予整型變量,并去掉其尾數(shù)。Java不支持C++?中的自動(dòng)強(qiáng)制類型轉(zhuǎn)換,如果需要,必須由程序顯式進(jìn)行強(qiáng)制類型轉(zhuǎn)換。1.1.4Java的應(yīng)用Java可以開發(fā)桌面應(yīng)用程序,如銀行軟件、商場結(jié)算軟件。使用Java開發(fā)的2D立體效果的桌面應(yīng)用系統(tǒng)如圖1.1所示。Java也可以開發(fā)面向Internet的應(yīng)用程序,如網(wǎng)上數(shù)碼商城、阿里巴巴、易趣網(wǎng)。使用Java開發(fā)的3D立體效果的Internet應(yīng)用程序如圖1.2所示。1.1.5Java開發(fā)平臺(tái)搭建Java開發(fā)平臺(tái),僅僅需要J2SESDK和一個(gè)文本編輯器。J2SE是Java技術(shù)的基石。開發(fā)Java程序,需要J2SESDK。SDK是SoftwareDevelopmentKit的縮寫,即軟件開發(fā)包。JRE是JavaRuntimeEnvironment的縮寫,即運(yùn)行時(shí)環(huán)境,安裝JRE才能在Windows、Linux以及Solaris系統(tǒng)中運(yùn)行Java程序,但JRE無法進(jìn)行Java開發(fā)。實(shí)際上,SDK包含了JRE,所以只要下載SDK即可。安裝程序結(jié)束以后,需要我們配制系統(tǒng)變量。方法如下:在桌面上右鍵單擊“我的電腦”,再單擊“屬性”,打開“系統(tǒng)屬性”對(duì)話框,選擇“高級(jí)”頁面,在系統(tǒng)變量中增加一個(gè)“JAVA_HOME”,其值是JDK的安裝路徑;另外,在path中加入“%JAVA_HOME%/bin”,再新建一個(gè)“CLASSPATH”,其值為“%JAVA_HOME%/lib”,如圖1.3所示。配置好后,在DOS環(huán)境下輸入“javac”命令,如果執(zhí)行正確,則表示JDK安裝和配置完成。1.1.6一個(gè)簡單的Java程序創(chuàng)建第一個(gè)Java應(yīng)用程序,用“記事本”就夠了。下面創(chuàng)建“HelloWorld!”程序。要?jiǎng)?chuàng)建一個(gè)Java程序,具體過程如圖1.4所示。1.創(chuàng)建源程序(1)打開“記事本”,按照?qǐng)D1.5所示的內(nèi)容輸入源程序。(2)進(jìn)入“資源管理器”,在C盤根目錄下建立一個(gè)名為“Java”的文件夾。(3)回到“記事本”程序,選擇“文件”菜單的“保存”項(xiàng),進(jìn)入“C:\JavaBar”,在文件名編輯框中輸入“HelloWorld.java”。2.編譯源程序(1)打開“命令提示符”窗口,進(jìn)入“C:\JavaBar”,輸入“dir”命令,則會(huì)看到“HelloWorld.java”,如圖1.6所示。(2)編譯Java源程序。輸入“javac”命令:javacHelloWorld.java如果沒有得到任何提示,則說明編譯正確通過了。查看當(dāng)前目錄,就會(huì)看到HelloWorld.java及HelloWorld.class兩個(gè)文件。其中HelloWorld.class是字節(jié)碼文件,可以在虛擬機(jī)上執(zhí)行。如果出現(xiàn)錯(cuò)誤,則應(yīng)仔細(xì)對(duì)照源代碼,檢查拼寫及大小寫,重新保存并編譯。3.運(yùn)行程序在“命令行提示符”窗口中輸入“javaHelloWorld”,如果運(yùn)行成功,則程序執(zhí)行結(jié)果如圖1.7所示。1.2Java開發(fā)環(huán)境1.2.1Java虛擬機(jī)(JVM)Java解釋器將充當(dāng)Java虛擬機(jī)的角色。Java解釋器讀取字節(jié)碼,取出指令并且將其翻譯成計(jì)算機(jī)能執(zhí)行的代碼,完成運(yùn)行過程。與VC、Delphi等語言把源程序編譯成特定平臺(tái)的指令集不同,Java編譯器把Java源程序編譯成與平臺(tái)無關(guān)的字節(jié)碼,運(yùn)行時(shí)由Java解釋器來翻譯成不同平臺(tái)的目標(biāo)代碼后執(zhí)行。同理,無論系統(tǒng)是Windows、UNIX、MacOS或者是用IE瀏覽器,只要安裝了Java虛擬機(jī),都可運(yùn)行。Java解釋器如圖1.8所示。1.2.2JDK、JRE、JVM之間的關(guān)系JRE的地位就像一臺(tái)PC,寫好的Win32應(yīng)用程序需要操作系統(tǒng)來運(yùn)行,同樣,編寫的Java程序也必須通過JRE才能運(yùn)行。所以安裝完JDK后,如果分別在硬盤上的兩個(gè)不同地方安裝了兩套JRE,那么可以想象電腦有兩臺(tái)虛擬的JavaPC都具有運(yùn)行Java程序的功能。因此,可以說,只要電腦安裝了JRE,就可以正確運(yùn)行Java應(yīng)用程序。為什么SunMicrosystems要讓JDK安裝兩套相同的JRE?這是因?yàn)镴DK里面有很多用Java編寫的開發(fā)工具,而且都放置在<JDK安裝目錄>\lib\tools.jar里。如果先將tools.jar改名為tools1.jar,然后運(yùn)行javac.exe,結(jié)果顯示如下:Exceptioninthread"main"java.lang.NoClassDefFoundError:com/sun/tools/javac/Main從上面例子可以看出,輸入“javac.exe”與輸入“java-cpc:\jdk\lib\tools.jarcom.sun.tools.javac.Main”是一樣的,會(huì)得到相同的結(jié)果。以上可以證明javac.exe只是一個(gè)包裝器(Wrapper),而制作的目的是為了讓開發(fā)者免于輸入太長的指令。而且可以發(fā)現(xiàn)<JDK安裝目錄>\lib目錄下的程序都很小,不大于29KB。由此可以得出一個(gè)結(jié)論,即JDK里的工具幾乎是用Java編寫的,所以也是Java應(yīng)用程序,因此要使用JDK所附的工具來開發(fā)Java程序,必須要自行附一套JRE才行,那么位于C:\ProgramFiles\Java目錄下的那套JRE就是用來運(yùn)行一般Java程序的。如果一臺(tái)電腦安裝兩套以上的JRE,則由Java.exe找到合適的JRE來運(yùn)行Java程序。Java.exe可依照下面的順序來查找JRE:①自己的目錄下有沒有JRE;②父目錄有沒有JRE;③查詢注冊(cè)表:[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JavaRuntimeEnvironment]所以java.exe的運(yùn)行結(jié)果與電腦里面那個(gè)被執(zhí)行的JRE有很大的關(guān)系。JRE目錄下的Bin目錄有兩個(gè)目錄:server與client。這就是真正的jvm.dll所在。jvm.dll無法單獨(dú)工作,當(dāng)jvm.dll啟動(dòng)后,會(huì)使用explicit的方法(就是使用Win32API之中的LoadLibrary()與GetProcAddress()來載入輔助用的動(dòng)態(tài)鏈接庫),而這些輔助用的動(dòng)態(tài)鏈接庫(.dll)都必須位于jvm.dll所在目錄的父目錄之中。因此想使用哪個(gè)JVM,只需要設(shè)置PATH,即指向JRE所在目錄下的jvm.dll。1.2.3JDK目錄結(jié)構(gòu)在Windows操作系統(tǒng)上,Java虛擬機(jī)安裝好后,其JDK安裝目錄結(jié)構(gòu)如圖1.9所示。1.?bin目錄bin目錄包含SDK開發(fā)工具的可執(zhí)行文件。2.?lib目錄lib目錄包含開發(fā)工具使用的歸檔包文件。其中,tools.jar包含支持SDK的工具和實(shí)用程序的非核心類;dt.jar是BeanInfo文件的DesignTime歸檔;BeanInfo文件用來告訴集成開發(fā)環(huán)境(IDE)如何顯示Java組件,以及如何讓開發(fā)人員根據(jù)應(yīng)用程序自定義它們。3.?jre目錄jre目錄為Java運(yùn)行時(shí)環(huán)境的根目錄。其子目錄\jre\bin中包含Java平臺(tái)使用的工具和庫的可執(zhí)行文件及DLL。其中DLL文件是指經(jīng)典虛擬機(jī)使用的DLL文件。經(jīng)典虛擬機(jī)是Java虛擬機(jī)的語言注釋版本。當(dāng)新虛擬機(jī)可用時(shí),它們的DLL文件將被安裝在jre/bin的某個(gè)新子目錄中。子目錄jre\lib是Java運(yùn)行時(shí)環(huán)境使用的代碼庫、屬性設(shè)置和資源文件,包括rt.jar自舉類(構(gòu)成Java平臺(tái)核心API的RunTime類),charsets.jar字符轉(zhuǎn)換類及其他與國際化和本地化有關(guān)的類。子目錄jre\lib\ext是Java平臺(tái)擴(kuò)展的默認(rèn)安裝目錄。子目錄jre\lib\security包含用于安全管理的文件。這些文件包括安全策略(java.policy)和安全屬性(java.security)文件。4.?demo目錄demo目錄包含資源代碼的程序示例。5.?include目錄include目錄包含C語言頭文件,支持Java本地接口和Java虛擬機(jī)調(diào)試程序接口的本地代碼編程技術(shù)。1.3Eclipse使用介紹1.3.1Eclipse的發(fā)展背景Eclipse的前身是IBM的VisualAgeforJava(簡稱VA4J)。把這個(gè)項(xiàng)目免費(fèi)贈(zèng)送給Eclipse社團(tuán)()前,IBM已經(jīng)投入超過四千萬美元進(jìn)行研發(fā)。Eclipse社團(tuán)的創(chuàng)始人還包括Borland、Merant、QNXSoftwareSystems、RationalSoftware、RedHat、SuSE、TogetherSoft和Webgain,后來加入的還有Oracle等公司,實(shí)力相當(dāng)雄厚。如今,IBM通過附屬的研發(fā)機(jī)構(gòu)ObjectTechnologiesInternational(簡稱OTI),繼續(xù)領(lǐng)導(dǎo)著Eclipse的開發(fā)。目前Eclipse的最新版本是4.4版,由于最新版本或許存在未測試出來的BUG,所以商業(yè)開發(fā)一般都不主張用某一工具的最新版本。1.3.2Eclipse的主要特點(diǎn)1.?Eclipse的構(gòu)架當(dāng)下載了Eclipse,可直接接觸到用來編輯和調(diào)試Java源代碼的Java開發(fā)工具箱,其功能相當(dāng)于IDE,用來開發(fā)產(chǎn)品??梢詳U(kuò)展Eclipse本身的插件開發(fā)環(huán)境,好比Winamp等多媒體播放器的插件開發(fā)包,用來打造開發(fā)工具。實(shí)際上,Eclipse的基礎(chǔ)是Eclipse平臺(tái),其提供軟件開發(fā)工具集成的服務(wù),而各種開發(fā)工具都是用插件的形式提供的。插件設(shè)計(jì)使Eclipse具有開放式可擴(kuò)充的結(jié)構(gòu)。同理,通過開發(fā)相應(yīng)插件,Eclipse也可以用來開發(fā)微軟的C#?程序。Eclipse設(shè)計(jì)的優(yōu)點(diǎn)在于,除了小部分運(yùn)行的核心之外,其他都是插件。通過插件機(jī)制,Eclipse體現(xiàn)了一種主觀能動(dòng)的態(tài)度:它提供了一個(gè)開放的平臺(tái)、一個(gè)平等參與的機(jī)會(huì),以及一些需要遵守的總體規(guī)則,然后程序開發(fā)者盡可能自由發(fā)揮。如果程序開發(fā)者有新的需要而Eclipse未能滿足,則可以自己動(dòng)手做個(gè)插件。主觀能動(dòng)并非開發(fā)工具的唯一態(tài)度。與Eclipse競爭的開發(fā)工具,比如Borland公司的JBuilder,采用的是另一種做法:用戶需要支付高昂的費(fèi)用,Borland提供一個(gè)近乎全能的JBuilder—包括支持Eclipse不內(nèi)建提供的JSP、EJB和WebServices的開發(fā)。如若用戶要求新的功能,則可以告知Borland,Borland有可能在下一個(gè)版本中加上新特性來滿足用戶需求,當(dāng)然也可能完全不理睬,認(rèn)為用戶的需求不足以令他們開發(fā)一個(gè)新特性。Borland公司的態(tài)度充滿了商業(yè)的嚴(yán)謹(jǐn),JBuilder也堪稱經(jīng)典,但Eclipse更瀟灑和自由。2.開放源代碼Eclipse是一個(gè)開放源代碼的軟件,是以CommonPublicLicense(簡稱CPL)授權(quán)形式發(fā)布的。雖然Eclipse是一個(gè)開放源代碼的項(xiàng)目,但由IBM這樣一個(gè)商業(yè)主體領(lǐng)導(dǎo)著項(xiàng)目的開發(fā),這一點(diǎn)跟普通的趨于無政府主義的開源軟件有所區(qū)別。實(shí)際上,CPL授權(quán)旨在促進(jìn)Eclipse平臺(tái)上的商業(yè)應(yīng)用,呈現(xiàn)一個(gè)基于Eclipse的免費(fèi)和商業(yè)軟件共存的系統(tǒng)。3.豐富的擴(kuò)展資源用戶還可以用Eclipse開發(fā)Eclipse的插件來擴(kuò)展其功能。得益于在Java社團(tuán)中極高的知名度以及開源的本質(zhì),很多個(gè)人或者廠商提供了許多工具來擴(kuò)展Eclipse,比如開發(fā)J2EE、UML建模等插件,很少有找不到相應(yīng)功能的插件,而且大多數(shù)工具都是免費(fèi)的。1.3.3Eclipse的開發(fā)環(huán)境1.?Eclipse工作臺(tái)在第一次打開Eclipse時(shí),首先看到的是歡迎界面,如圖1.10所示。Eclipse工作臺(tái)由幾個(gè)稱為視圖的窗格組成,比如左上角的Navigator視圖。窗格的集合稱為透視圖。默認(rèn)的透視圖是Resource透視圖,它是一個(gè)基本的通用視圖集,用于管理項(xiàng)目以及查看和編輯項(xiàng)目中的文件。Navigator下方的Outline視圖在編輯器中顯示文檔的大綱,文檔的大綱準(zhǔn)確性取決于編輯器和文檔的類型;對(duì)于Java源文件,該大綱將顯示所有已聲明的類、屬性和方法。Tasks視圖中顯示關(guān)于用戶正在操作項(xiàng)目的有關(guān)信息,既可以是Eclipse生成的信息,也可以是用戶手動(dòng)添加的任務(wù)信息。Eclipse還附帶了一個(gè)幫助系統(tǒng),其中包括Eclipse工作臺(tái)以及所包括插件的用戶指南。這個(gè)幫助系統(tǒng)有助于用戶更好地理解Eclipse的工作流程。Navigator視圖允許用戶創(chuàng)建、選擇和刪除項(xiàng)目,如圖1.11所示。根據(jù)Navigator中選定的文檔類型,相應(yīng)的編輯器窗口將在這里打開。如果Eclipse沒有注冊(cè)用于某特定文檔類型(如Windows系統(tǒng)上的?.doc文件)的適當(dāng)編輯器,則Eclipse將設(shè)法使用外部編輯器來打開該文檔。2.用Eclipse開發(fā)“HelloWorld!”程序下面通過“HelloWorld!”程序來體驗(yàn)Java開發(fā)方法。第一步:新建Java項(xiàng)目。Eclipse啟動(dòng)后出現(xiàn)如圖1.12所示的界面,要求選擇工作空間,可輸入“F:\java”或其他可用的文件夾。如圖1.13所示,選擇“File→New→JavaProject”,點(diǎn)擊“Next”按鈕,打開“NewJavaProject”向?qū)?。在彈出的?duì)話框中輸入項(xiàng)目名稱“HelloWorld”,點(diǎn)擊“Finish”按鈕結(jié)束。于是生成一個(gè)新工程,如圖1.16所示。第二步:新建HelloWorld類。如圖1.17所示,選擇“File→New→Class”。在“NewJavaClass”向?qū)е械摹癗ame”框中輸入“HelloWorld”,并勾選“publicstaticvoidmain(String[]args)”復(fù)選框。在彈出的對(duì)話框中輸入類名稱“HelloWorld”,如圖1.18所示。點(diǎn)擊“Finish”按鈕,生成一個(gè)空的類,如圖1.19所示。第三步:添加打印語句。現(xiàn)在僅僅缺少一句“HelloWorld!”字樣的輸出語句:System.out.println("HelloWorld!");在Eclipse中快速輸入代碼的方法如下:(1)把光標(biāo)移動(dòng)到“main”函數(shù)那行的“{”后,按回車鍵,光標(biāo)會(huì)自動(dòng)跳到下一行并且多一個(gè)Tab位的縮進(jìn),自動(dòng)保持代碼的美觀。(2)輸入“System”(注意“S”大寫),然后輸入“.”,這時(shí)會(huì)自動(dòng)彈出一個(gè)菜單,顯示“System”所有成員變量和方法。接著輸入“o”,彈出的菜單會(huì)自動(dòng)過濾以“o”打頭的成員變量和方法,剩下“out”,只要按下回車鍵,“out”便自動(dòng)加到“.”的后面。繼續(xù)輸入“.”,又會(huì)彈出菜單顯示“out”的方法。(3)直接輸入“println”或在下拉菜單中搜索,并按回車鍵,這時(shí),會(huì)發(fā)現(xiàn)“println”后面的括號(hào)都自動(dòng)生成了。把光標(biāo)移動(dòng)到括號(hào)里面,輸入引號(hào),Eclipse會(huì)自動(dòng)添加另外一半引號(hào)。(4)在兩個(gè)引號(hào)中間輸入“HelloWorld!”。(5)把光標(biāo)移動(dòng)到本行的最后,輸入“;”號(hào)。上述方法體現(xiàn)了Eclipse的代碼完成(CodeCompletion)功能。代碼完成功能能夠通過自動(dòng)過濾加快輸入的速度;通過選擇與回車鍵選擇的方式來避免輸入錯(cuò)誤;當(dāng)記不清某個(gè)類的成員變量或者方法時(shí)可以有效地提示用戶。編寫完的HelloWorld類如圖1.20所示。第四步:運(yùn)行Java程序。選擇“Run→Run”,Eclipse會(huì)彈出運(yùn)行設(shè)置向?qū)?,詢問運(yùn)行配置。這個(gè)程序是一個(gè)Java程序,所以在Configurations里選擇“JavaApplication”,然后點(diǎn)擊“New”按鈕。當(dāng)Eclipse創(chuàng)建好配置以后,用戶只需要點(diǎn)擊“Run”按鈕(如圖1.21所示),即可在底部的Console(控制臺(tái))查看運(yùn)行結(jié)果(如圖1.22所示)。2.1標(biāo)識(shí)符與數(shù)據(jù)類型
2.2常量與變量
2.3語句、表達(dá)式和運(yùn)算符
2.4數(shù)據(jù)類型之間的轉(zhuǎn)換
2.5注釋
2.6關(guān)鍵字
2.7Java編碼規(guī)范與編碼格式2.1標(biāo)識(shí)符與數(shù)據(jù)類型2.1.1標(biāo)識(shí)符在程序設(shè)計(jì)語言中存在的任何一個(gè)成分(如變量、常量、屬性、方法、類、接口等)都需要有一個(gè)名字表示,這個(gè)名字就是標(biāo)識(shí)符。也可以說,程序員對(duì)程序中的每個(gè)成分命名時(shí)使用的命名符號(hào)就是標(biāo)識(shí)符(identifier)。Java語言中,標(biāo)識(shí)符是以字母、下劃線(_)、美元符(?$?)開始的一個(gè)字符序列,后面可以跟字母、下劃線、美元符和數(shù)字,如圖2.1所示。標(biāo)識(shí)符是大小寫敏感的,即要區(qū)分大小寫,也就是說Class與class是不同的。2.1.2數(shù)據(jù)類型Java語言的數(shù)據(jù)類型有簡單類型和復(fù)合類型(用戶根據(jù)需要用基本數(shù)據(jù)類型經(jīng)過組合而形成的類型)。簡單數(shù)據(jù)類型包括以下八種:整數(shù)類型(Integer):byte、short、int、long。浮點(diǎn)類型(Floating):float、double。字符類型(Textual):char。布爾類型(Logical):boolean。1.整型數(shù)據(jù)(1)整型常量:十進(jìn)制整數(shù)。如:123,-456,0。八進(jìn)制整數(shù)。以0開頭,如0123表示十進(jìn)制數(shù)83,-011表示十進(jìn)制數(shù)?-9。十六進(jìn)制整數(shù)。以0x或0X開頭,如0x123表示十進(jìn)制數(shù)291,-0X12表示十進(jìn)制數(shù)?-18。(2)整型變量如表2.1所示。2.浮點(diǎn)型(實(shí)型)數(shù)據(jù)(1)實(shí)型常量:十進(jìn)制數(shù)形式。由數(shù)字和小數(shù)點(diǎn)組成,且必須有小數(shù)點(diǎn),如0.123,1.23,123.0??茖W(xué)計(jì)數(shù)法形式。如:123e3或123E3,其中e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。?float型的值,必須在浮點(diǎn)常量后加f或F,如1.23f。浮點(diǎn)常量后不加任何字符或加D或加d表示雙精度數(shù),即double型的值。(2)實(shí)型變量如表2.2所示。3.字符型數(shù)據(jù)(1)字符型常量:字符型常量是用單引號(hào)括起來的一個(gè)字符,如?'a'、'A'。(2)字符型變量:類型為char,它在機(jī)器中占16位,其范圍為0~65?535。字符型變量的定義如下:charc='a'; /*指定變量c為char型,且賦初值為?'a'*/4.布爾型數(shù)據(jù)布爾型數(shù)據(jù)只有兩個(gè)值true和false,且它們不對(duì)應(yīng)于任何整數(shù)值。布爾型變量的定義:booleanb=true;與C++?不同,true和false不對(duì)應(yīng)于1和0。2.2常?量?與?變?量2.2.1常量常量有字面(Literal)常量和符號(hào)常量兩種形式。1.字面常量字面常量是指其數(shù)值意義如同字面所表示的一樣,有各種數(shù)據(jù)類型的常量,還有字符串常量。其中,字符型常量是用引號(hào)括起的單個(gè)字符,字符串常量是用雙引號(hào)括起的零個(gè)或多個(gè)字符串序列。用單引號(hào)括起的還有轉(zhuǎn)義字符,如回車、換行等。Java的轉(zhuǎn)義字符用反斜杠“\”開頭,后面跟一個(gè)字母來表示某個(gè)特定的控制符。2.符號(hào)常量符號(hào)常量是用Java標(biāo)識(shí)符表示的一個(gè)常量,用保留字final來實(shí)現(xiàn),符號(hào)常量定義的一般格式如下:finaltypeSpecifiervarName=value[,varName[=value]…];<final><數(shù)據(jù)類型><符號(hào)常量標(biāo)識(shí)符>=<常量值>;2.2.2變量變量是Java程序中的基本存儲(chǔ)單元,它包括變量名、變量類型和作用域三部分。電腦一般使用內(nèi)存來記憶計(jì)算時(shí)所使用的數(shù)據(jù),內(nèi)存空間與變量的關(guān)系可由入住旅館的過程來說明。旅館入住時(shí)對(duì)房間的需求各不相同,應(yīng)根據(jù)需求為旅客分配房間類型,指定房間號(hào),旅客才能順利入??!同樣,數(shù)據(jù)各式各樣,要先根據(jù)數(shù)據(jù)的需求(即類型)為它申請(qǐng)一塊合適的內(nèi)存空間,再給這塊內(nèi)存空間指定一個(gè)變量名,這樣才能正常訪問數(shù)據(jù)存儲(chǔ)的位置,兩個(gè)過程的對(duì)應(yīng)如圖2.3所示。使用變量的步驟如下:第一步:聲明變量,即“根據(jù)數(shù)據(jù)類型在內(nèi)存申請(qǐng)空間”。第二步:賦值,即“將數(shù)據(jù)存儲(chǔ)至對(duì)應(yīng)的內(nèi)存空間”。說明:第一步和第二步可以合并。第三步:使用變量,即“取出數(shù)據(jù)使用”。使用變量時(shí),可能會(huì)出現(xiàn)以下常見錯(cuò)誤:(1)變量未賦值,如圖2.4所示的運(yùn)行代碼及結(jié)果。(2)變量名命名不符合要求,如圖2.5所示的運(yùn)行代碼及結(jié)果。(3)變量名重名,如圖2.6所示的運(yùn)行代碼及結(jié)果。2.2.3變量的作用域Java語言所處理的任何對(duì)象(變量、標(biāo)識(shí)符常量、類、實(shí)例等)都遵從先聲明后使用的原則。聲明的作用有兩點(diǎn):一是確認(rèn)對(duì)象的標(biāo)識(shí)符,以便系統(tǒng)為它指定存儲(chǔ)地址和識(shí)別它,這是“按名訪問”的原則;二是為該對(duì)象指定數(shù)據(jù)類型,以便系統(tǒng)為它分配足夠的存儲(chǔ)單元。變量經(jīng)聲明后,便可以對(duì)它進(jìn)行賦值和使用,若使用前沒有賦值,則在編譯時(shí)會(huì)指出語法錯(cuò)誤。這也是Java語言安全性的體現(xiàn)。變量的作用域指明可訪問該變量的一段代碼,聲明一個(gè)變量的同時(shí)也就指明了變量的作用域。按作用域來分,變量可以有:局部變量、類變量(也稱成員變量)、方法參數(shù)和異常處理參數(shù)。在一個(gè)確定的域中,變量名應(yīng)該是唯一的。局部變量在方法或方法的一個(gè)塊代碼中聲明,則它的作用域?yàn)樗诘拇a塊(整個(gè)方法或方法中的某塊代碼)。類變量在類中聲明,而不是在類的某個(gè)方法中聲明,則它的作用域是整個(gè)類。方法參數(shù)傳遞給方法,它的作用域就是這個(gè)方法。異常處理參數(shù)傳遞給異常處理代碼,它的作用域就是異常處理部分。2.2.4變量的默認(rèn)值若不給變量賦初值,則變量默認(rèn)值如表2.3所示。2.3語句、表達(dá)式和運(yùn)算符2.3.1賦值運(yùn)算符與賦值表達(dá)式Java語言中,賦值運(yùn)算符是“=”,左邊必須是變量。在賦值運(yùn)算符“=”之前加上其他運(yùn)算符,則構(gòu)成復(fù)合賦值運(yùn)算符,如“=”、“+=”、“-=”、“*=”、“/=”都是賦值運(yùn)算符。復(fù)合賦值運(yùn)算符如表2.4所示。2.3.2語句語句是程序的基本執(zhí)行單位,一個(gè)程序由若干條語句組成。Java語言的語句,在其末尾有一個(gè)分號(hào)“;”作為標(biāo)記,其語法和語義與C和C++?中的很相似,但有一個(gè)例外,goto語句被取消了。Java語言的語句可分為四大類:聲明語句、表達(dá)式語句、流程控制語句和異常處理語句。也有文獻(xiàn)或教材將Java語言的語句分為簡單語句和復(fù)合語句。簡單語句是語句的基本構(gòu)建塊;復(fù)合語句是那些包含其他語句的語句。簡單語句包括表達(dá)式語句、局部變量聲明、break語句、continue語句和return語句。復(fù)合語句包括語句塊、選擇語句、循環(huán)語句以及執(zhí)行語句。2.3.3算術(shù)運(yùn)算符算術(shù)運(yùn)算符是指能夠進(jìn)行算術(shù)運(yùn)算的符號(hào),它有:+、-、*、/、%?(取余數(shù))、++?(自增1)、--?(自減1)、-?(取反)。2.3.4關(guān)系運(yùn)算符關(guān)系運(yùn)算符是指能夠?qū)\(yùn)算數(shù)進(jìn)行關(guān)系運(yùn)算的符號(hào),共有6個(gè),即?>、<、>=、<=、==、!=。利用關(guān)系運(yùn)算符連接的式子稱為關(guān)系表達(dá)式。關(guān)系運(yùn)算實(shí)際上就是常說的比較運(yùn)算,結(jié)果是邏輯值(true或false)。2.3.5邏輯運(yùn)算符邏輯運(yùn)算符是指能夠進(jìn)行邏輯運(yùn)算的符號(hào),即邏輯非(!)、邏輯與(&&)、邏輯或(||)。它與關(guān)系運(yùn)算符的不同之處是關(guān)系運(yùn)算符的運(yùn)算結(jié)果是布爾值,而邏輯運(yùn)算的運(yùn)算數(shù)和運(yùn)算結(jié)果都是布爾值。2.3.6位運(yùn)算符位運(yùn)算是對(duì)整數(shù)的二進(jìn)制表示的每一位進(jìn)行操作,位運(yùn)算的操作數(shù)和結(jié)果都是整型量。位運(yùn)算符包括右移(>>)、左移(<<)、不帶符號(hào)的右移(>>>)、位與(&)、位或(?|?)、位異或(?^?)、位反(?~?)。2.3.7其他運(yùn)算符其他運(yùn)算符包括條件運(yùn)算符(?:)、分量運(yùn)算符(·)、下標(biāo)運(yùn)算符([])、實(shí)例運(yùn)算符(instanceof)、內(nèi)存分配運(yùn)算符(new)、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型)、方法調(diào)用運(yùn)算符(())等。條件運(yùn)算符是Java中唯一的一個(gè)三元運(yùn)算符,其使用格式如下:布爾表達(dá)式?結(jié)果表達(dá)式1:結(jié)果表達(dá)式2;在實(shí)際應(yīng)用中,常常將條件運(yùn)算符與賦值運(yùn)算符結(jié)合起來構(gòu)成賦值表達(dá)式。2.3.8運(yùn)算符的優(yōu)先級(jí)(1)不同類型數(shù)據(jù)間的優(yōu)先關(guān)系如下:低>高byte、short、char→int→long→float→double(2)運(yùn)算符的優(yōu)先次序。表達(dá)式的運(yùn)算按照運(yùn)算符的優(yōu)先順序從高到低進(jìn)行,同級(jí)運(yùn)算符從左到右進(jìn)行,如表2.5所示。2.4數(shù)據(jù)類型之間的轉(zhuǎn)換2.4.1自動(dòng)類型轉(zhuǎn)換整型、實(shí)型、字符型數(shù)據(jù)可以混合運(yùn)算。運(yùn)算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,即把精度較低的類型轉(zhuǎn)換為精度較高的類型,然后進(jìn)行運(yùn)算,這種轉(zhuǎn)換稱為自動(dòng)類型轉(zhuǎn)換,如表2.6所示。int類型的常量可以直接賦值給byte、short、char類型的變量。2.4.2強(qiáng)制類型轉(zhuǎn)換高級(jí)數(shù)據(jù)要轉(zhuǎn)換成低級(jí)數(shù)據(jù),需要用到強(qiáng)制類型轉(zhuǎn)換,如下:inti;byteb=(byte)i; /*把int型變量i強(qiáng)制轉(zhuǎn)換為byte型*/轉(zhuǎn)換格式:(類型名)表達(dá)式強(qiáng)制類型轉(zhuǎn)換只是得到一個(gè)所需類型的中間變量,原來變量的類型并不發(fā)生變化。boolean類型的數(shù)據(jù)不能進(jìn)行自動(dòng)和強(qiáng)制類型轉(zhuǎn)換。2.4.3表達(dá)式的類型轉(zhuǎn)換如果要進(jìn)行強(qiáng)制類型轉(zhuǎn)換的對(duì)象不是單個(gè)數(shù)據(jù)或變量,而是一個(gè)包含多項(xiàng)的表達(dá)式,則表達(dá)式必須用括號(hào)括起來,否則結(jié)果有誤。轉(zhuǎn)換格式:(類型名)(表達(dá)式)2.5注釋Java程序里主要有兩種類型的注釋。第一種是傳統(tǒng)的、C語言風(fēng)格的注釋,是從C++繼承而來的。這些注釋用一個(gè)“/*”起頭,隨后是注釋內(nèi)容,并可跨越多行,最后用一個(gè)“*/”結(jié)束,這種注釋方法叫做“多行注釋”。注意:許多程序員為閱讀方便,在連續(xù)注釋內(nèi)容的每一行都用一個(gè)“*”開頭,所以經(jīng)常能看到像下面這樣的注釋:/*這是*一段注釋,*它跨越了多個(gè)行*/但請(qǐng)記住,進(jìn)行編譯時(shí),“/*”和“*/”之間的內(nèi)容都會(huì)被忽略,所以上述注釋與下面這段注釋并沒有什么不同:/*這是一段注釋,它跨越了多個(gè)行*/第二種類型的注釋也起源于C++。這種注釋叫做“單行注釋”,以一個(gè)“//”起頭,表示這一行的所有內(nèi)容都是注釋。這種類型的注釋更常用,因?yàn)樗鼤鴮憰r(shí)更方便。沒有必要在鍵盤上尋找“/”,再尋找“*”(只需按兩次同樣的鍵),而且不必在注釋結(jié)尾時(shí)加一個(gè)結(jié)束標(biāo)記。下面便是這類注釋的一個(gè)例子://這是一條單行注釋運(yùn)行代碼如圖2.10所示。還有一種注釋是多行注釋的變形,叫做“文檔注釋”,格式如下:/***/運(yùn)行代碼如圖2.11所示。可用javadoc.exe提取程序文件中的文檔注釋來制作HTML幫助文件。2.6關(guān)鍵字關(guān)鍵字又稱為保留字,它具有專門的意義和用途,不能當(dāng)作一般的標(biāo)識(shí)符使用。下面這些標(biāo)識(shí)符是Java語言中的所有保留字:abstractbreakbytebooleancatchcaseclasscharcontinuedefaultdoubledoelseextendsfalsefinalfloatforfinallyifimportimplementsintinterfaceinstanceoflonglengthnativenewnullpackageprivateprotectedpublicreturnswitchsynchronizedshortstaticsupertrytruethisthrowthrowsthreadsafetransientvoidwhileJava語言中的保留字均用小寫字母表示。2.7Java編碼規(guī)范與編碼格式一個(gè)完整的Java源程序應(yīng)該包括下列部分:package語句; //該部分至多只有一句,必須放在源程序的第一句import語句; /*該部分可以有若干import語句或者沒有,必須放在所有的類定義之前*/publicclassDefinition; //公共類定義部分,至多只有一個(gè)公共類的定義//Java語言規(guī)定該Java源程序的文件名必須與該公共類名完全一致classDefinition; //類定義部分,可以有0個(gè)或者多個(gè)類定義interfaceDefinition; //接口定義部分,可以有0個(gè)或者多個(gè)接口定義package語句:由于Java編譯器為每個(gè)類生成一個(gè)字節(jié)碼文件,且文件名與類名相同,因此同名的類有可能發(fā)生沖突。為了解決這一問題,Java提供包來管理類名空間,包實(shí)際提供了一種命名機(jī)制和可見性限制機(jī)制。而在Java的系統(tǒng)類庫中,把功能相似的類放到一個(gè)包(Package)中。例如,所有的圖形界面的類都放在Java.awt這個(gè)包中,與網(wǎng)絡(luò)功能有關(guān)的類都放到這個(gè)包中。用戶自己編寫的類(指.class文件)也應(yīng)該按照功能放在由自己命名的相應(yīng)的包中。包在實(shí)際的實(shí)現(xiàn)過程中是與文件系統(tǒng)相對(duì)應(yīng)的,如javawork.helloworld所對(duì)應(yīng)的目錄是path\javawork\helloworld,而path是在編譯該源程序時(shí)指定的。比如在命令行中編譯上述HelloWorldApp.java文件時(shí),可以在命令行中輸入“javac-df:\javaprojectHelloWorldApp.java”,則編譯生成的HelloWorldApp.class文件將放在目錄f:\javaproject\javawork\helloworld\目錄下面,此時(shí)f:\javaprojcet相當(dāng)于path。但是如果在編譯時(shí)不指定path,則生成的?.class文件將放在編譯時(shí)命令行所在當(dāng)前目錄的下面。比如在命令行目錄f:\javaproject下輸入編譯命令“javacHelloWorldApp.java”,則生成的HelloWorldApp.class文件將放在目錄f:\javaproject下面,此時(shí)的package語句沒起作用。但是,如果程序中包含了package語句,則在運(yùn)行時(shí)就必須包含包名。例如,HelloWorldApp.java程序的第一行語句是packagep1.p2;編譯的時(shí)候在命令行下輸入“javac-dpathHelloWorldApp.java”,則HelloWorldApp.class將放在目錄path\p1\p2的下面,這時(shí)候運(yùn)行該程序時(shí)有以下兩種方式。第一種:在命令行下的path目錄下輸入字符“javap1.p2.HelloWorldApp”。第二種:在環(huán)境變量classpath中加入目錄path,則運(yùn)行時(shí)在任何目錄下輸入“javap1.p2.HelloWorldApp”即可。import語句:如果在源程序中用到了除java.lang這個(gè)包以外的類,無論是系統(tǒng)的類還是自己定義的包中的類,都必須用import語句標(biāo)識(shí),以便通知編譯器在編譯時(shí)找到相應(yīng)的類文件。例如,上例中的java.awt是系統(tǒng)的包,而javawork.newcentury是用戶自定義的包。比如程序中用到了類Button,而Button是屬于包java.awt的,在編譯時(shí)編譯器將從目錄classpath\java\awt中去尋找類Button,classpath是事先設(shè)定的環(huán)境變量,如可以設(shè)為classpath=.;d:\jdk1.3\lib\。classpath也可以稱為類路徑,需要提醒大家注意的是,在classpath中往往包含多個(gè)路徑,用分號(hào)隔開。例如,classpath=.;d:\jdk1.3\lib\中的第一個(gè)分號(hào)之前的路徑是一個(gè)點(diǎn),表示當(dāng)前目錄,分號(hào)后面的路徑是d:\jdk1.3\lib\,表示系統(tǒng)的標(biāo)準(zhǔn)類庫目錄。在編譯過程中尋找類時(shí),先從環(huán)境變量classpath的第一個(gè)目錄開始往下找,如先從當(dāng)前目錄往下找java.awt中的類Button時(shí),編譯器找不著,然后從環(huán)境變量classpath的第二個(gè)目錄開始往下找,就是從系統(tǒng)的標(biāo)準(zhǔn)類庫目錄d:\jdk1.3\lib開始往下找java.awt的Button這個(gè)類,最后就可找到。如果要從一個(gè)包中引入多個(gè)類,則在包名后加上“.*”表示。如果程序中用到了用戶自己定義的包中的類,假如在上面程序中要用到j(luò)avawork.newcentury包中的類HelloWorldApp,而包javawork.newcentury所對(duì)應(yīng)的目錄是f:\javaproject\javawork\newcentury,classpath仍舊是classpath=.;d:\jdk1.3\lib\,則編譯器在編譯時(shí)將首先從當(dāng)前目錄尋找包javawork.newcentury,結(jié)果沒有找到,然后從環(huán)境變量classpath的第二個(gè)目錄d:\jdk1.3\lib\開始往下找,但是仍然沒有找到。原因在于包javawork.newcentury是放在目錄f:\javaproject下面。因此,需要重新設(shè)定環(huán)境變量classpath,設(shè)為classpath=.;d:\jdk1.3\lib\;f:\javaproject\,于是編譯器從f:\javaproject開始找包javawork.newcentury,就可以找到。源文件的命名規(guī)則:如果在源程序中包含有公共類的定義,則該源文件名必須與該公共類的名字完全一致,字母的大小寫也必須一樣。這是Java語言的一個(gè)嚴(yán)格的規(guī)定,如果不遵守,在編譯時(shí)就會(huì)出錯(cuò)。因此,在一個(gè)Java源程序中至多只能有一個(gè)公共類的定義。如果源程序中不包含公共類的定義,則該文件名可以任意取名;如果在一個(gè)源程序中有多個(gè)類定義,則在編譯時(shí)將為每個(gè)類生成一個(gè)?.class文件。3.1分支語句
3.2循環(huán)語句
3.3跳轉(zhuǎn)語句3.1分支語句3.1.1if語句if語句是選擇結(jié)構(gòu)中最基本的語句。if語句有兩種形式:if和if-else。if語句有選擇地執(zhí)行語句,只有當(dāng)表達(dá)式條件為真(true)時(shí)執(zhí)行程序。if-else在表達(dá)式條件為真(true)與假(false)時(shí)各執(zhí)行不同的程序序列。1.if-else語句if-else語句的基本形式如下:if(布爾表達(dá)式){//根據(jù)布爾表達(dá)式的真假?zèng)Q定執(zhí)行不同的語句語句序列1//條件為真}[else{語句序列2//條件為假}]其中,布爾表達(dá)式一般為條件表達(dá)式或邏輯表達(dá)式。當(dāng)布爾表達(dá)式的值為true時(shí),執(zhí)行語句序列1;當(dāng)布爾表達(dá)式的值為false時(shí),執(zhí)行語句序列2。復(fù)雜條件下的if選擇結(jié)構(gòu)如表3.1所示。2.嵌套if語句在實(shí)際處理中,常會(huì)有許多條件需要判斷,因此要用到多個(gè)if,甚至在一個(gè)if中還有多個(gè)if,故稱做嵌套if。嵌套if語句的語法格式如下:if(布爾表達(dá)式A){語句序列Aif(布爾表達(dá)式B){語句序列B1}else{語句序列B2}…}else{if(布爾表達(dá)式C){語句序列C1}else{語句序列C2}}else子句不能單獨(dú)作為語句來使用,它必須和if配對(duì)使用。else總是與離它最近的if配對(duì)??梢允褂么罄ㄌ?hào)來改變if-else的配對(duì)關(guān)系。3.if-elseif-else語句若出現(xiàn)的情況有兩種以上,則可用if-elseif-else語句。if-elseif-else語句的語法格式如下:if(布爾表達(dá)式1){語句序列1}elseif(布爾表達(dá)式2){語句序列2}elseif(布爾表達(dá)式N){語句序列N}else{語句序列M}程序執(zhí)行時(shí),首先判斷布爾表達(dá)式1的值,若為真,則順序執(zhí)行語句序列1,if語句結(jié)束;若為假,則判斷布爾表達(dá)式2的值,布爾表達(dá)式2的值若為真,則順序執(zhí)行語句序列2,if語句結(jié)束;布爾表達(dá)式2的值若為假,則判斷布爾表達(dá)式3的值……若所有的布爾表達(dá)式的值都為假,則執(zhí)行語句序列M,if語句結(jié)束。嵌套if選擇結(jié)構(gòu)如下:if(條件1){if(條件2){代碼塊1}else{代碼塊2}}else{代碼塊3}3.1.2switch語句在if語句中,布爾表達(dá)式的值只有兩種:true和false。若情況更多時(shí),就需要另外一種可提供更多選擇的語句:switch語句。根據(jù)一個(gè)整數(shù)表達(dá)式的值,switch語句可從一系列代碼中選出一段執(zhí)行。它的格式如下:switch(表達(dá)式){case常量1:語句序列1;break;case常量2:語句序列2;break;case常量N:語句序列N;break;[default:語句序列M;break;]}說明:(1)表達(dá)式的類型可以為byte、short、int、char。多分支語句把表達(dá)式的值與每個(gè)case子句中的常量進(jìn)行對(duì)比,如果匹配成功,則執(zhí)行該case子句后面的語句序列。(2)?case子句中的“常量N”必須是常量,而且所有case子句中的常量應(yīng)是不同的。(3)?default子句是可選的。(4)?break語句執(zhí)行完一個(gè)case分支后,使程序跳出switch語句,即終止switch語句的執(zhí)行。在一些特殊情況下,多個(gè)不同的case值要執(zhí)行一組相同的操作,這時(shí)可以不用break。使用switch語句時(shí),常見的一些錯(cuò)誤如下:(1)?case分支后忘記寫break,如圖3.7所示的運(yùn)行代碼及輸出結(jié)果。(2)?case子句的常量相同,如圖3.8所示的運(yùn)行代碼。(3)?default沒有放在末尾,如圖3.9所示的運(yùn)行代碼及輸出結(jié)果。(4)?switch表達(dá)式的值不是整型或字符型,如圖3.10所示的運(yùn)行代碼。3.2循環(huán)語句循環(huán)語句的作用是反復(fù)執(zhí)行一段語句序列,直到滿足終止循環(huán)的條件為止。一個(gè)循環(huán)一般包含以下四部分:(1)初始化部分:用來設(shè)置循環(huán)的一些初始條件,一般只執(zhí)行一次。(2)終止部分:通常是一個(gè)布爾表達(dá)式,每一次循環(huán)都要對(duì)該表達(dá)式求值,以驗(yàn)證是否滿足終止條件。(3)循環(huán)體部分:被反復(fù)執(zhí)行的一段語句序列,可以是一個(gè)單一語句,也可以是一個(gè)復(fù)合語句。(4)迭代部分:在當(dāng)前循環(huán)結(jié)束,下一次循環(huán)開始執(zhí)行之前執(zhí)行的語句,常常用來更新影響終止條件的變量,使循環(huán)最終結(jié)束。3.2.1while語句while語句的語法格式如下:[初始化部分]while(布爾表達(dá)式){//終止部分循環(huán)體部分[迭代部分]}在循環(huán)剛開始時(shí),會(huì)計(jì)算一次布爾表達(dá)式的值。而對(duì)于后來每一次額外的循環(huán),都會(huì)在開始前重新計(jì)算一次。當(dāng)布爾表達(dá)式的值為true時(shí),執(zhí)行循環(huán)體部分和迭代部分,然后再判斷布爾表達(dá)式的值。如果布爾表達(dá)式的值為false,則退出循環(huán);否則,重復(fù)上面的過程。3.2.2do-while語句do-while語句的語法格式如下:[初始化部分]do{循環(huán)體部分[迭代部分]}while(布爾表達(dá)式);//終止部分while和do-while唯一的區(qū)別就是do-while肯定會(huì)執(zhí)行一次。也就是說,至少會(huì)將其中的語句“過一遍”—即便表達(dá)式第一次計(jì)算為false。而在while循環(huán)語句中,若條件第一次就為false,那么不會(huì)執(zhí)行其中的語句。在實(shí)際應(yīng)用中,while比do-while更常用一些。3.2.3for語句for語句是循環(huán)語句中使用最為靈活、最為廣泛的一個(gè)。for語句在第一次反復(fù)之前要進(jìn)行初始化。隨后,它會(huì)進(jìn)行條件測試,而且在每一次反復(fù)的時(shí)候,進(jìn)行某種形式的“步進(jìn)”(Stepping)。for語句的語法格式如下:for([初始表達(dá)式];[布爾表達(dá)式];[步進(jìn)]){循環(huán)體部分}無論初始表達(dá)式、布爾表達(dá)式,還是步進(jìn),都可以置空。每次反復(fù)前,都要測試布爾表達(dá)式。若獲得的結(jié)果是false,就會(huì)繼續(xù)執(zhí)行緊跟在for后面的那行代碼。在每次循環(huán)的末尾,會(huì)計(jì)算一次步進(jìn)。說明:(1)?for語句執(zhí)行時(shí),首先執(zhí)行初始化操作,然后判斷終止條件是否滿足,如果滿足,則執(zhí)行循環(huán)體中的語句,最后執(zhí)行迭代部分。完成一次循環(huán)后,重新判斷終止條件。(2)初始化、終止以及迭代部分都可以為空語句(但分號(hào)不能省),三者均為空的時(shí)候,相當(dāng)于一個(gè)無限循環(huán)。(3)在初始化部分和迭代部分可以使用逗號(hào)語句來進(jìn)行多個(gè)操作。逗號(hào)語句是用逗號(hào)分隔的語句序列。使用for語句時(shí),常見的一些錯(cuò)誤如下:(1)變量未賦初值,如圖3.14所示的運(yùn)行代碼。(2)缺少循環(huán)條件,造成死循環(huán),如圖3.15所示的運(yùn)行代碼。(3)循環(huán)變量的值無變化,造成死循環(huán),如圖3.16所示的運(yùn)行代碼。(4)表達(dá)式全省略,造成死循環(huán),如圖3.17所示的運(yùn)行代碼及結(jié)果。3.2.4循環(huán)語句對(duì)比綜上所述的循環(huán)語句有while、do-while、for。當(dāng)需要多次重復(fù)執(zhí)行一個(gè)或多個(gè)任務(wù)的問題時(shí)可考慮使用循環(huán)語句來解決。上述三種循環(huán)語句都有四個(gè)必不可少的部分:初始化部分、布爾表達(dá)式、循環(huán)體部分、迭代部分,具體區(qū)別如下:(1)語法格式不同,如圖3.18所示。(2)執(zhí)行順序不同。while語句:先判斷,再執(zhí)行。do-while語句:先執(zhí)行,再判斷。for語句:先判斷,再執(zhí)行。(3)適用情況不同。循環(huán)次數(shù)確定的情況,通常選用for語句;循環(huán)次數(shù)不確定的情況,通常選用while和do-while語句。3.3跳轉(zhuǎn)語句3.3.1break語句在switch語句中,break語句用來終止switch語句的執(zhí)行,使程序從switch語句后的第一條語句開始執(zhí)行。break語句的第二種使用情況就是跳出它所指定的塊,并從緊跟該塊的第一條語句處執(zhí)行。break語句的語法格式如下:break[標(biāo)號(hào)];break有兩種形式:不帶標(biāo)號(hào)和帶標(biāo)號(hào)。標(biāo)號(hào)必須位于break語句所在的封閉語句塊的開始處。3.3.2continue語句continue語句只用于循環(huán)結(jié)構(gòu)中。它的語法格式如下:continue[標(biāo)號(hào)];不帶標(biāo)號(hào)的continue語句的作用是終止當(dāng)前循環(huán)結(jié)構(gòu)的本次循環(huán),直接開始下一次循環(huán);帶標(biāo)號(hào)的continue語句的作用是把程序直接轉(zhuǎn)到標(biāo)號(hào)所指定的代碼段的下一次循環(huán)。3.3.3return語句return語句的作用是從當(dāng)前方法中退出,返回到調(diào)用該方法的語句處,并從緊跟該語句的下一條語句繼續(xù)執(zhí)行程序。返回語句有以下兩種格式:returnexpression;或return;4.1數(shù)組
4.2字符串4.1數(shù)組4.1.1一維數(shù)組的定義一維數(shù)組的定義方式為:數(shù)組類型數(shù)組名[];或數(shù)組類型[]數(shù)組名;類型(type)可以為Java中任意的數(shù)據(jù)類型,包括簡單類型和復(fù)合類型。數(shù)組名arrayName為一個(gè)合法的標(biāo)識(shí)符,[]?指明該變量是一個(gè)數(shù)組類型變量。聲明了一個(gè)整型數(shù)組,數(shù)組中的每個(gè)元素為整型數(shù)據(jù)。與C、C++?不同,Java在數(shù)組的定義中并不為數(shù)組元素分配內(nèi)存,因此?[]?中不用指出數(shù)組中元素個(gè)數(shù),即數(shù)組長度,而且對(duì)于如上定義的一個(gè)數(shù)組是不能訪問它的任何元素的。我們必須為它分配內(nèi)存空間,這時(shí)要用到運(yùn)算符new,其語法格式如下:數(shù)組名=new數(shù)組類型[數(shù)組的長度];為一個(gè)整型數(shù)組分配3個(gè)int型整數(shù)所占據(jù)的內(nèi)存空間。通常,這兩部分可以合在一起。4.1.2一維數(shù)組的初始化對(duì)數(shù)組元素可以按照上述的例子進(jìn)行賦值,也可以在定義數(shù)組的同時(shí)進(jìn)行初始化。用逗號(hào)(,)分隔數(shù)組的各個(gè)元素,系統(tǒng)自動(dòng)為數(shù)組分配一定的內(nèi)存空間。靜態(tài)初始化靜態(tài)初始化如下:intintArray[]={1,2,3,4};StringstringArray[]={"abc","How","you"};動(dòng)態(tài)初始化(1)簡單類型的數(shù)組,動(dòng)態(tài)初始化如下:intintArray[];intArray=newint[5];(2)復(fù)合類型的數(shù)組,動(dòng)態(tài)初始化如下:StringstringArray[];StringstringArray=newString[3]; //為數(shù)組中每個(gè)元素開辟引用空間stringArray[0]=newString("How"); //為第一個(gè)數(shù)組元素開辟空間stringArray[1]=newString("are"); //為第二個(gè)數(shù)組元素開辟空間stringArray[2]=newString("you"); //為第三個(gè)數(shù)組元素開辟空間4.1.3一維數(shù)組的引用定義了一個(gè)數(shù)組,并用運(yùn)算符new為它分配了內(nèi)存空間后,就可以引用數(shù)組中的每一個(gè)元素了。數(shù)組元素的引用方式為:數(shù)組名[下標(biāo)];如a[3],b[i](i為整型),c[6*I]?等。下標(biāo)從0開始,一直到數(shù)組的長度減1。對(duì)于上述的intArray數(shù)來說,它有3個(gè)元素,分別為intArray[0]、intArray[1]、intArray[2]。注意:沒有intArray[3]。另外,與C、C++?不同,Java對(duì)數(shù)組元素要進(jìn)行越界檢查以保證安全性。同時(shí),對(duì)于每個(gè)數(shù)組都有一個(gè)屬性length來指明它的長度。例如:intArray.length指明數(shù)組intArray的長度。4.1.4多維數(shù)組Java中多維數(shù)組被看作數(shù)組的數(shù)組。例如,二維數(shù)組為一個(gè)特殊的一維數(shù)組,其每個(gè)元素又是一個(gè)一維數(shù)組。以下我們主要以二維數(shù)組為例來進(jìn)行說明,多維數(shù)組的情況類似。4.1.5二維數(shù)組的定義二維數(shù)組的定義方式為:數(shù)組類型數(shù)組名[][];與一維數(shù)組一樣,二維數(shù)組也要使用運(yùn)算符new來分配內(nèi)存,才可以訪問每個(gè)元素。對(duì)多維數(shù)組來說,分配內(nèi)存空間有以下兩種方法:(1)直接為每一維數(shù)組分配內(nèi)存空間,如:inta[][]=newint[2][3];(2)從最高維數(shù)組開始,分別為每一維數(shù)組分配內(nèi)存空間,如:inta[][]=newint[2][];a[0]=newint[3];a[1]=newint[3];4.1.6二維數(shù)組的初始化為數(shù)組分配完內(nèi)存空間后,需要對(duì)數(shù)組進(jìn)行初始化,有兩種方式:(1)直接對(duì)每個(gè)元素進(jìn)行賦值,如:Inta[][]=newint[2][2];a[0][0]=1;a[0][1]=2;a[1][0]=3;a[1][1]=4;(2)在定義數(shù)組的同時(shí)進(jìn)行初始化,如:inta[][]={{2,3},{1,5},{3,4}};定義了一個(gè)3?×?2的數(shù)組,并對(duì)每個(gè)元素賦值。4.1.7二維數(shù)組的引用引用二維數(shù)組中的每個(gè)元素,引用方式為:數(shù)組名[下標(biāo)1][下標(biāo)2]其中下標(biāo)1、下標(biāo)2分別為二維數(shù)組的第一、二維下標(biāo),可為整型常數(shù)或表達(dá)式,如a[2][3]等。同樣,每一維的下標(biāo)都從0開始。4.2字符串4.2.1字符串常量所謂的字符串指的是字符序列,它是組織字符的基本數(shù)據(jù)結(jié)構(gòu)。在Java語言中,把字符串當(dāng)作對(duì)象來處理,并提供了一系列方法對(duì)字符串進(jìn)行操作,使字符串更容易處理,也符合面向?qū)ο缶幊痰囊?guī)范。單個(gè)字符用單引號(hào)來表示,例如:'J'、'A'、'V'、'A':分別表示字符J、A、V、A。常量字符串用雙引號(hào)來表示,例如:"JAVA"、"Language"分別表示字符串JAVA、Language。字符串是一個(gè)字符序列,可以包含字母、數(shù)字和其他符號(hào)。Java中的字符串常量始終都是以對(duì)象的形式出現(xiàn)的。也就是說,每個(gè)字符串常量對(duì)應(yīng)一個(gè)String類的對(duì)象。4.2.2String類字符串1.String類字符串的定義String類是用來表示字符串常量的,用它創(chuàng)建的每個(gè)對(duì)象都是字符串常量,一經(jīng)建立就不能修改。創(chuàng)建對(duì)象的格式為:類型名對(duì)象名=new類型名([初始化值]);例如:Stringstr=newString("helloJava!");String類提供了很多方法,每個(gè)字符串常量對(duì)應(yīng)一個(gè)String類的對(duì)象,所以一個(gè)字符串常量可以直接調(diào)用String類中提供的方法。創(chuàng)建String類對(duì)象的構(gòu)造方法如下:Strings=newString():生成一個(gè)空串String(charchars[]):用字符數(shù)組chars創(chuàng)建一個(gè)字符串對(duì)象String(charchars[],intstartIndex,intnumChars):從字符數(shù)組chars中的位置startIndex起,numChars個(gè)字符組成的字符串對(duì)象。String(byteascii[],inthiByte):用字符數(shù)組ascii創(chuàng)建一個(gè)字符串對(duì)象,hiByte為Unicode字符的高位字節(jié)。對(duì)于ASCII碼來說為0,其他非拉丁字符集為非0。String(byteascii[],inthiByte,intstartIndex,intnumChars):其作用和參數(shù)意義同上。2.String類字符串的基本操作(1)?String類提供了length()、charAt()、indexOf()、lastIndexOf()、getChars()、getBytes()、toCharArray()、booleanequals(Objectobj)、equalsZgnoreCase(Stringstr)等方法。?publicintlength();此方法返回字符串的字符個(gè)數(shù)。?booleanequals(Objectobj)和equalsIgnoreCase(Stringstr)這兩個(gè)方法都用來比較兩個(gè)字符串的值是否相等,不同之處在于后者是忽略大小寫的。運(yùn)算符“==”比較兩個(gè)字符串是否引用同一個(gè)實(shí)例;equals()和equalsIgnoreCase()則比較兩個(gè)字符串中對(duì)應(yīng)的每個(gè)字符值是否相等。為了避免錯(cuò)誤,建議使用equals()和equalsIgnoreCase()。?publiccharcharAt(intindex)此方法返回字符串中index位置上的字符,其中index值的范圍是0~length-1。?publicintindexOf(intch);publiclastIndexOf(inch);此方法返回字符ch在字符串中出現(xiàn)的第一個(gè)和最后一個(gè)的位置。?publicintindexOf(Stringstr);publicintlastIndexOf(Stringstr);此方法返回子串str中第一個(gè)字符出現(xiàn)在字符串中的第一個(gè)和最后一個(gè)的位置。?publicintindexOf(intch,intfromIndex);publiclastIndexOf(inch,intfromIndex);此方法返回字符ch出現(xiàn)在字符串中fromIndex位置后的第一個(gè)和最后一個(gè)的位置。?publicintindexOf(Stringstr,intfromIndex);publicintlastIndexOf(Stringstr,intfromIndex);此方法返回子串str中的第一個(gè)字符出現(xiàn)在字符串中fromIndex位置后的第一個(gè)和最后一個(gè)的位置。?publicvoidgetchars(intsrcbegin,intend,charbuf[],intdstbegin);srcbegin為要提取的第一個(gè)字符在源串中的位置,end為要提取的最后一個(gè)字符在源串中的位置,字符數(shù)組buf[]存放目的字符串,dstbegin為提取的字符串在目的串中的起始位置。?publicvoidgetBytes(intsrcBegin,intsrcEnd,byte[]dst,intdstBegin);參數(shù)及用法同上,只是串中的字符均用8位表示。(2)修改字符串。String類提供了concat()、replace()、substring()、toLowerCase()、toUpperCase()等方法。?publicStringcontat(Stringstr);用來將當(dāng)前字符串對(duì)象與給定字符串str
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022年廣西壯族自治區(qū)防城港市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2022年吉林省松原市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2021年江蘇省泰州市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2023年廣東省云浮市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2024年陜西省銅川市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 廣西北海市(2024年-2025年小學(xué)六年級(jí)語文)統(tǒng)編版期中考試(下學(xué)期)試卷及答案
- 《課件霧與霾》課件
- 2024年示范本:文化藝術(shù)品版權(quán)使用許可合同
- 2024年餐飲服務(wù)標(biāo)準(zhǔn)合作合同范本版B版
- 2022-2024年浙江中考英語試題匯編:閱讀理解(應(yīng)用文)-學(xué)生版
- 普外科醫(yī)療組長競聘演講
- 【企業(yè)盈利能力探析的國內(nèi)外文獻(xiàn)綜述2400字】
- 醫(yī)學(xué)生創(chuàng)新創(chuàng)業(yè)基礎(chǔ)智慧樹知到期末考試答案2024年
- 大學(xué)生國家安全教育智慧樹知到期末考試答案2024年
- 油墨組成和分類
- DB37T 5175-2021 建筑與市政工程綠色施工技術(shù)標(biāo)準(zhǔn)
- 自動(dòng)噴漆線使用說明書
- 科研項(xiàng)目評(píng)審評(píng)分表
- 國家開放大學(xué)《土木工程力學(xué)(本)》章節(jié)測試參考答案
- 醫(yī)療器械數(shù)據(jù)分析控制程序
- 稻盛和夫經(jīng)營哲學(xué).ppt
評(píng)論
0/150
提交評(píng)論