java語言基礎(chǔ)教程_第1頁
java語言基礎(chǔ)教程_第2頁
java語言基礎(chǔ)教程_第3頁
java語言基礎(chǔ)教程_第4頁
java語言基礎(chǔ)教程_第5頁
已閱讀5頁,還剩122頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章Java概述

§1.IJava語言出現(xiàn)的背景、影響及應(yīng)用前景

一、背景

最近一年多來,在Internet上出現(xiàn)的特別吸引人的事件就是Java語

言和用Java編寫的瀏覽器HotJava。

1991年,SUNMicroSystem公司的JameGosling、BillJoe等人,為在

電視、控制烤面包箱等家用消費類電子產(chǎn)品上進行交互式操作而開

發(fā)了一個名為Oak的軟件(即一種橡樹的名字),但當(dāng)時并沒有引起人

們的注意,直到1994年下半年,Internet的迅猛發(fā)展,環(huán)球信息網(wǎng)

WWW的快速增長,促進了Java語言研制的進展以介紹面向?qū)ο缶幊?/p>

的基本概念、基本理論為重點,結(jié)合Java語言的語法規(guī)則、編程特

點和設(shè)計思想、強調(diào)容易發(fā)生錯誤和編程應(yīng)注意的地方,使學(xué)生能對

Java技術(shù)有一個總體了解,通過本課程學(xué)習(xí),使學(xué)生掌握J(rèn)ava語言

的基礎(chǔ)知識,理解和掌握面向?qū)ο蟪绦蛟O(shè)計的基本思想,熟練地使用

Java語言進行程序的編寫、編譯以及調(diào)試工作,使得它逐漸成為

Internet上受歡迎的開發(fā)與編程語言,一些著名的計算機公司紛紛

購買了Java語言的使用權(quán),如Microsoft、IBM、Netscape>Novell、

Apple、DEC、SGI等,因此,Java語言被美國的著名雜志PCMagazine

評為1995年十大優(yōu)秀科技產(chǎn)品,(計算機類就此一項入選),隨之大量

出現(xiàn)了用Java編寫的軟件產(chǎn)品,受到工業(yè)界的重視與好評,認(rèn)為

“Java是八十年代以來計算機界的一件大事〃,微軟總裁比爾?蓋茨

在悄悄地觀察了一段時間后,不無感慨地說:“Java是長時間以來最

卓越的程序設(shè)計語言”,并確定微軟整個軟件開發(fā)的戰(zhàn)略從PC單機時

代向著以網(wǎng)絡(luò)為中心的計算時代轉(zhuǎn)移,而購買Java則是他的重大戰(zhàn)

略決策的實施部署。

因此,Java的誕生必將對整個計算機產(chǎn)業(yè)發(fā)生深遠(yuǎn)的影響,對傳統(tǒng)的

計算模型提出了新的挑戰(zhàn)。

SUNMicroSystem公司的總裁ScottMcNealy認(rèn)為Java為Internet和

WWW開辟了一個嶄新的時代。

環(huán)球信息網(wǎng)WWW的創(chuàng)始人Berners-Lee說:"計算機事業(yè)發(fā)展的下一個

浪潮就是Java,并且將很快會發(fā)生的〃。

看來,使用Java已成大勢所趨!

Microsoft和IBM兩大公司都計劃在Internet上銷售用Java編寫的

軟件。Apple、HP、IBM>MicroSoft>Novell、SGI、SCO、Tandem

等公司均計劃將Java并入各自開發(fā)的操作系統(tǒng),而負(fù)責(zé)開發(fā)并推廣

Java技術(shù)的SunSoft公司(這是SUN下屬的一個子公司),將通過頒

發(fā)許可證的辦法來允許各家公司把Java虛擬機和Java的Applets

類庫嵌入他們開發(fā)的操作系統(tǒng),這樣各類開發(fā)人員就能更容易地選

擇多種平臺來使用Java語言編程,不同的用戶也就可以脫離Web瀏

覽器來運行Java應(yīng)用程序,這無疑是很受廣大用戶歡迎的,也為Java

語言的應(yīng)用開拓了極為廣闊的前景。(當(dāng)然,各類JavaOS之間的兼容

性必須得到重視,好在JavaSoft已保證將監(jiān)督這種兼容性)。

另外,由JavaSoft推出的完全用Java編寫的Internet上新型瀏覽器

Hotjava,比去年alpha版更為實用,不僅能編制動態(tài)的應(yīng)用軟件,而

且能編制完整的成套桌面應(yīng)用軟件,將來還會提供更多的能幫助編

制動態(tài)應(yīng)用軟件的模塊,顯然,這也是為Java的應(yīng)用提供了有力的

例證。

今年6月7日,由SUN公司和臺灣經(jīng)濟事務(wù)部信息發(fā)展局、臺灣信息

技術(shù)研究所等單位牽頭,成立了一個“Java聯(lián)盟〃,參加的有22個在

臺灣相當(dāng)著名的計算機公司,并在臺北建立一個〃Java開發(fā)中心〃,在

新竹建立一個"Java語言實驗室〃,以掀起臺灣開發(fā)與應(yīng)用Java語言

的熱潮。

香港則在今年4月就舉行了全島的Java杯比賽,在計算機界掀起了學(xué)

習(xí)Java的熱潮(尤其是在大學(xué)生們中,出現(xiàn)了一批Java迷)。

有人預(yù)言:Java將是網(wǎng)絡(luò)上的〃世界語〃,今后所有的用其他語言編寫

的軟件統(tǒng)統(tǒng)都要用Java語言來改寫。

二、Java語言對軟件開發(fā)技術(shù)的影響

工業(yè)界不少人預(yù)言:〃java語言的出現(xiàn),將會引起一場軟件革命”,這是

因為傳統(tǒng)的軟件往往都是與具體的實現(xiàn)環(huán)境有關(guān),換了一個環(huán)境就

需要作一番改動,耗時費力,而Java語言能在執(zhí)行碼(二進制碼)上

兼容,這樣以前所開發(fā)的軟件就能運行在不同的機器上,只要所用的

機器能提供Java語言解釋器即可。

Java語言將對未來軟件的開發(fā)產(chǎn)生影響,可從如下兒個方面考慮:

1軟件的需求分析:可將用戶的需求進行動態(tài)的、可視化描述,以提供

設(shè)計者更加直觀的要求。而用戶的需求是各色各樣的,不受地區(qū)、行

業(yè)、部門、愛好的影響,都可以用Java語言描述清楚。

2軟件的開發(fā)方法:由于Java語言的面向目標(biāo)的特性,所以完全可以

用0-0的技術(shù)與方法來開發(fā),這是符合最新的軟件開發(fā)規(guī)范要求的。

3Java語言的動畫效果遠(yuǎn)比GUI技術(shù)更加逼真,尤其是利用WWW提供

的巨大動畫資源空間,可以共享全世界的動態(tài)畫面的資源。

4軟件最終產(chǎn)品:用Java語言開發(fā)的軟件可以具有可視化、可聽化、

可操作化的效交互、動畫與動作要它停就停,要它繼續(xù)就繼續(xù),而

這是在電影與電視播放過程中難以做到的。

5其它:使用Java語言對開發(fā)效益、開發(fā)價值都有比較明顯的影響。

三、工業(yè)界對Java語言的評價

1996年5月29?31日,在美國舊金山召開了一個全世界Java語言開

發(fā)者大會,(JavaOneDeveloperConfer-ence),出席會議的多達6500

多人,來自工業(yè)界的超過一半,有人評價說:〃這是近年來計算機界最

光輝的一次盛會”,一些工業(yè)界的老總們相當(dāng)看好Java語言,認(rèn)為它

的使用將會引起一場軟件革命。從軟件的設(shè)計風(fēng)格、設(shè)計方法、設(shè)

計目標(biāo)到設(shè)計過程,都會產(chǎn)生徹底的變革,”甚至?xí)淖兇诵乔虻纳?/p>

活方式

在這次會上,Java的創(chuàng)始人之一JamesGosling說:“Java不僅僅只是

applets,它能做任何事情〃,Dta咨詢公司的高級軟件工程師

RichKadel說:"Java不僅僅是一種程序設(shè)計語言,更是現(xiàn)代化軟件再

實現(xiàn)的基礎(chǔ);Java還是未來新型0S的核心;將會出現(xiàn)Java芯片;將構(gòu)

成各種應(yīng)用軟件的開發(fā)平臺與實現(xiàn)環(huán)境,是人們必不可少的開發(fā)工

具,……

由于各界都看好它,因此,各大公司都紛紛表示支持Java,Intel、

Xerox公司聲言將把Java嵌入到他們的產(chǎn)品中去。就連華爾街金融

界也在投入資金人力用Java開發(fā)電子貿(mào)易、金融軟件。

所以有人說:“現(xiàn)在第三方的開發(fā)商都團結(jié)在Java大旗周圍了!〃,紛

紛推出用Java開發(fā)的各種軟件產(chǎn)品,以期盡快地占領(lǐng)市場。

四、Java語言的應(yīng)用前景

Java語言有著廣泛的應(yīng)用前景,大體上可以從以下兒個方面來考慮其

應(yīng)用:

1所有面向?qū)ο蟮膽?yīng)用開發(fā),包括面向?qū)ο蟮氖录枋?、處理、綜合

等;

2計算過程的可視化、可操作化的軟件的開發(fā);

3動態(tài)畫面的設(shè)計,包括圖形圖像的調(diào)用;

4交互操作的設(shè)計(選擇交互、定向交互、控制流程等);

5Internet的系統(tǒng)管理功能模塊的設(shè)計,包括Web頁面的動態(tài)設(shè)計、

管理和交互操作設(shè)計等;

6Intranet(企業(yè)內(nèi)部網(wǎng))上的軟件開發(fā)(直接面向企業(yè)內(nèi)部用戶的軟

件);

7與各類數(shù)據(jù)庫連接查詢的SQL語句實現(xiàn);

8其它應(yīng)用類型的程序。

§1.2Java的特點

Java是一個廣泛使用的網(wǎng)絡(luò)編程語言,它是一種新的計算概念。

首先,作為一種程序設(shè)計語言,它簡單、面向?qū)ο?、不依賴于機器的結(jié)

構(gòu)、具有可移植性、魯棒性、安全性、并且提供了并發(fā)的機制、具

有很高的性能。其次,它最大限度地利用了網(wǎng)絡(luò),Java的小應(yīng)用程序

(applet)可在網(wǎng)絡(luò)上傳輸而不受CPU和環(huán)境的限制。另外,Java還

提供了豐富的類庫,使程序設(shè)計者可以很方便地建立自己的系統(tǒng)。

下面我們分別從這三個方面來討論Java的特點,然后通過把Java與

C,C++相比進一步指出它所具有的優(yōu)點。

一、Java語言

Java語言有下面一些特點:簡單、面向?qū)ο蟆⒎植际?、解釋?zhí)行、魯

棒、安全、體系結(jié)構(gòu)中立、可移植、高性能、多線程以及動態(tài)性。

1.簡單性

Java語言是一種面向?qū)ο蟮恼Z言,它通過提供最基本的方法來完成指

定的任務(wù),只需理解一些基本的概念,就可以用它編寫出適合于各種

情況的應(yīng)用程序。Java略去了運算符重載、多重繼承等模糊的概念,

并且通過實現(xiàn)自動垃圾收集大大簡化了程序設(shè)計者的內(nèi)存管理工

作。另外,Java也適合于在小型機上運行,它的基本解釋器及類的支

持只有40KB左右,加上標(biāo)準(zhǔn)類庫和線程的支持也只有215KB左右。

庫和線程的支持也只有215KB左右。

2.面向?qū)ο?/p>

Java語言的設(shè)計集中于對象及其接口,它提供了簡單的類機制以及動

態(tài)的接口模型。對象中封裝了它的狀態(tài)變量以及相應(yīng)的方法,實現(xiàn)了

模塊化和信息隱藏;而類則提供了一類對象的原型,并且通過繼承機

制,子類可以使用父類所提供的方法,實現(xiàn)了代碼的復(fù)用。

3.分布性

Java是面向網(wǎng)絡(luò)的語言。通過它提供的類庫可以處理TCP/IP協(xié)議,

用戶可以通過URL地址在網(wǎng)絡(luò)上很方便地訪問其它對象。

4.魯棒性

Java在編譯和運行程序時,都要對可能出現(xiàn)的問題進行檢查,以消除

錯誤的產(chǎn)生。它提供自動垃圾收集來進行內(nèi)存管理,防止程序員在管

理內(nèi)存時容易產(chǎn)生的錯誤。通過集成的面向?qū)ο蟮睦馓幚頇C制,

在編譯時,Java提示出可能出現(xiàn)但未被處理的例外,幫助程序員正確

地進行選擇以防止系統(tǒng)的崩潰。另外,Java在編譯時還可捕獲類型

聲明中的許多常見錯誤,防止動態(tài)運行時不匹配問題的出現(xiàn)。

5.安全性

用于網(wǎng)絡(luò)、分布環(huán)境下的Java必須要防止病毒的入侵。Java不支持

指針,一切對內(nèi)存的訪問都必須通過對象的實例變量來實現(xiàn),這樣就

防止程序員使用〃特洛伊〃木馬等欺騙手段訪問對象的私有成員,同

時也避免了指針操作中容易產(chǎn)生的錯誤。

6.體系結(jié)構(gòu)中立

Java解釋器生成與體系結(jié)構(gòu)無關(guān)的字節(jié)碼指令,只要安裝了Java運

行時系統(tǒng),Java程序就可在任意的處理器上運行。這些字節(jié)碼指令

對應(yīng)于Java虛擬機中的表示,Java解釋器得到字節(jié)碼后,對它進行

轉(zhuǎn)換,使之能夠在不同的平臺運行。

7,可移植性

與平臺無關(guān)的特性使Java程序可以方便地被移植到網(wǎng)絡(luò)上的不同機

器。同時一,Java的類庫中也實現(xiàn)了與不同平臺的接口,使這些類庫可

以移植。另外,Java編譯器是由Java語言實現(xiàn)的,Java運行時系統(tǒng)

由標(biāo)準(zhǔn)C實現(xiàn),這使得Java系統(tǒng)本身也具有可移植性。

8.解釋執(zhí)行

Java解釋器直接對Java字節(jié)碼進行解釋執(zhí)行。字節(jié)碼本身攜帶了許

多編譯時信息,使得連接過程更加簡單。

9.高性能

和其它解釋執(zhí)行的語言如BASIC.TCL不同,Java字節(jié)碼的設(shè)計使之

能很容易地直接轉(zhuǎn)換成對應(yīng)于特定CPU的機器碼,從而得到較高的

性能。

10.多線程

多線程機制使應(yīng)用程序能夠并行執(zhí)行,而且同步機制保證了對共享數(shù)

據(jù)的正確操作。通過使用多線程,程序設(shè)計者可以分別用不同的線程

完成特定的行為,而不需要采用全局的事件循環(huán)機制,這樣就很容易

地實現(xiàn)網(wǎng)絡(luò)上的實時交互行為。

11.動態(tài)性

Java的設(shè)計使它適合于一個不斷發(fā)展的環(huán)境。在類庫中可以自由地

加入新的方法和實例變量而不會影響用戶程序的執(zhí)行。并且Java通

過接口來支持多重繼承,使之比嚴(yán)格的類繼承具有更靈活的方式和

擴展性。

二、JavaApplet

Java語言的特性使它可以最大限度地利用網(wǎng)絡(luò)。Ap-plet是Java的

小應(yīng)用程序,它是動態(tài)、安全、跨平臺的網(wǎng)絡(luò)應(yīng)用程序。JavaApplet

嵌入HT肛語言,通過主頁發(fā)布到Internet。網(wǎng)絡(luò)用戶訪問服務(wù)器的

Applet時一,這些Applet從網(wǎng)絡(luò)上進行傳輸,然后在支持Java的瀏覽

器中運行。由于Java語言的安全機缶”,用戶一旦載入Applet,就可

以放心地來生成多媒體的用戶界面或完成復(fù)雜的計算而不必?fù)?dān)心病

毒的入侵。雖然Applet可以和圖像、聲音、動畫等一樣從網(wǎng)絡(luò)上下

載,但它并不同于這些多媒體的文件格式,它可以接收用戶的輸入,動

態(tài)地進行改變,而不僅僅是動畫的顯示和聲音的播放。

三、豐富的類庫

Java提供了大量的類以滿足網(wǎng)絡(luò)化、多線程、面向?qū)ο笙到y(tǒng)的需要。

1.語言包提供的支持包括字符串處理、多線程處理、例外處理、數(shù)學(xué)

函數(shù)處理等,可以用它簡單地實現(xiàn)Java程序的運行平臺。

2.實用程序包提供的支持包括哈希表、堆棧、可變數(shù)組、時間和日期

等。

3.輸入輸出包用統(tǒng)一的“流〃模型來實現(xiàn)所有格式的I/O,包括文件系

統(tǒng)、網(wǎng)絡(luò)、輸入

4.低級網(wǎng)絡(luò)包用于實現(xiàn)Socket編程。

5.抽象圖形用戶接口包實現(xiàn)了不同平臺的計算機的圖形用戶接口部

件,包括窗口、菜單、滾動條、對話框等,使得Java可以移植到不同

平臺的機器。

6.網(wǎng)絡(luò)包支持Internet的TCP/IP協(xié)議,提供了與In-ternet的接口。

它支持URL連接,WWW的即時訪問,并且簡化了用戶/服務(wù)器模型的程

序設(shè)計。

四、Java和C、C++

對于變量聲明、參數(shù)傳遞、操作符、流控制等,Java使用了和C、C++

相同的傳統(tǒng),使得熟悉C、C++的程序員能很方便地進行編程。同

時,Java為了實現(xiàn)其簡單、魯棒、安全等特性,也摒棄了C和C++中

許多不合理的內(nèi)容。

1.全局變量

Java程序中,不能在所有類之外定義全局變量,只能通過在一個類中

定義公用、靜態(tài)的變量來實現(xiàn)一個全局變量。例如:

ClassGlobalVar{publicstaticglobal_var;}

在類GlobalVar中定義變量global_var為publicstatic,使得其它

類可以訪問和修改該變量。Java對全局變量進行了更好的封裝。

而在C和C++中,依賴于不加封裝的全局變量常常造成系統(tǒng)的崩潰。

2.Goto

Java不支持C、C++中的goto語句,而是通過例外處理語句try,Catch,

final等來代替C、C++中用goto來處理遇到錯誤時跳轉(zhuǎn)的情況,使程

序更可讀且更結(jié)構(gòu)化。

3.指針

指針是C、C++中最靈活,也是最容易產(chǎn)生錯誤的數(shù)據(jù)類型。由指針?biāo)?/p>

進行的內(nèi)存地址操作常會造成不可預(yù)知的錯誤,同時通過指針對某

個內(nèi)存地址進行顯式類型轉(zhuǎn)換后,可以訪問一個C++中的私有成員,

從而破壞安全性,造成系統(tǒng)的崩潰。而Java對指針進行完全的控制,

程序員不能直接進行任何指針操作,例如把整數(shù)轉(zhuǎn)化為指針,或者通

過指針釋放某一內(nèi)存地址等。同時,數(shù)組作為類在Java中實現(xiàn),良好

地解決了數(shù)組訪問越界這一C、C++中不作檢查的錯誤。

4.內(nèi)存管理

在C中,程序員通過庫函數(shù)malloc()和free()來分配和釋放內(nèi)存,C++

中則通過運算符new和delete來分配和釋放內(nèi)存。再次釋放已釋放

的內(nèi)存塊或未被分配的內(nèi)存塊,會造成系統(tǒng)的崩潰;同樣,忘記釋放

不再使用的內(nèi)存塊也會逐漸耗盡系統(tǒng)資源。而在Java中,所有的數(shù)

據(jù)結(jié)構(gòu)都是對象,通過運算符new為它們分配內(nèi)存堆。通過new得到

對象的處理權(quán),而實際分配給對象的內(nèi)存可能隨程序運行而改

變,Java對此自動地進行管理并且進行垃圾收集,有效防止了由于程

序員的誤操作而導(dǎo)致的錯誤,并且更好地利用了系統(tǒng)資源。

5.數(shù)據(jù)類型的支持

在C、C++中,對于不同的平臺,編譯器對于簡單數(shù)據(jù)類型如int,float

等分別分配不同長度的字節(jié)數(shù),例如:int在IBMPC中為16位,在

VAX-11中為32位,這導(dǎo)致了代碼的不可移植性,但在Java中,對于這

些數(shù)據(jù)類型總是分配固定長度的位數(shù),如對int型,它總占32位,這

就保證了Java的平臺無關(guān)性。

6.類型轉(zhuǎn)換

在C、C++中,可以通過指針進行任意的類型轉(zhuǎn)換,常常帶來不安全性,

而Java中,運行時系統(tǒng)對對象的處理要進行類型相容性檢查,以防止

不安全的轉(zhuǎn)換。

7.頭文件

C、C++中用頭文件來聲明類的原型以及全局變量、庫函數(shù)等,在大的

系統(tǒng)中,維護這些頭文件是很困難的。而Java不支持頭文件,類成員

的類型和訪問權(quán)限都封裝在一個類中,運行時系統(tǒng)對訪問進行控制,

防止對私有成員的操作。同時,Java中用import語句來與其它類進

行通訊,以便使用它們的方法。

8.結(jié)構(gòu)和聯(lián)合

C、C++中的結(jié)構(gòu)和聯(lián)合中所有成員均為公有,這就帶來了安全性問題。

Java中不包含結(jié)構(gòu)和聯(lián)合,所有的內(nèi)容都封裝在類中。

9.預(yù)處理

C、C++中用宏定義來實現(xiàn)的代碼給程序的可讀性帶來了困難。在Java

中,不支持宏,它通過關(guān)鍵字final來聲明一個常量,以實現(xiàn)宏定義中

廣泛使用的常量定義。

目錄

Java入門(一)

Java入門(二)

JavaAH(三)

JavaAH(四)

Java入門(五)

JavaAH(六)

JavaAH(七)

Java入門(八)

Java入門(九)

第一章Java概述(續(xù))

§1.3.簡單的Java程序

下面我們先介紹兩個簡單的Java程序,并對其進行分析。

例1.1.

publicclassHelloWor1dApp{//anapplication

publicstaticvoidmain(Stringargs[]){

System.out.printin("HelloWorld!");

)

)

本程序的作用是輸出下面一行信息:

HelloWorld!

程序中,首先用保留字class來聲明一個新的類,其類名為

HelloWorldApp,它是一個公共類(public)。整個類定義由大括號(}

括起來。在該類中定義了一個main。方法,其中public表示訪問權(quán)

限,指明所有的類都可以使用這一方法;static指明該方法是一個類

方法,它可以通過類名直接調(diào)用;void則指明main。方法不返回任

何值。對于一個應(yīng)用程序來說,main。方法是必需的,而且必須按照

如上的格式來定義。Jave解釋器在沒有生成任何實例的情況下,以

main。作為入口來執(zhí)行程序。Jave程序中可以定義多個類,每個類

中可以定義多個方法,但是最多只能7有一個公共類,main()方法也

只能有一個,作為程序的入口。main。方法定義中,括號()中的

Stringargs□是傳遞給main()方法的參數(shù),參數(shù)名為args,它是類

String的一個實例,參數(shù)可以為0個或多個,每個參數(shù)用〃類名參數(shù)

名〃來指定,多個參數(shù)間用逗號分隔。在main。方法的實現(xiàn)(大括號

中),只有一條語句:

System,out.printin("HelloWorld!");

它用來實現(xiàn)字符串的輸此這條語句實現(xiàn)與C語言中的printf語句

和C++中coutVV語句相同的功能。另外,〃后的內(nèi)容為注釋。

現(xiàn)在我們可以運行該程序。首先把它放到一個名為

HelloWorldApp.java的文件中,這里,文件名應(yīng)和類名相同,因為

Java解釋器要求公共類必須放在與其同名的文件中。然后對它進行

編譯:

C:\>javacHelloWorldApp.java

編譯的結(jié)果是生成字節(jié)碼文件HelloWorldApp.classo最后用java

解釋器來運行該字節(jié)碼文件:

C:\>javaHelloWorldApp

結(jié)果在屏幕上顯示HelloWorld!

我們再來看下面的一個例子:

例1.2

importjava.awr.*;

importjava,applet.

publicclassHelloWorldAppletextendsApplet{//anapplet

publicvoidpaint(Graphicsg){

g.drawString(/zHelloWorld!^,20,20);

)

)

這是一個簡單的Applet(小應(yīng)用程序)。程序中,首先用import語句

輸入java,awr和java.applet下所有的包,使得該程序可能使用這

些包中所定義的類,它類似于C中的include語句。然后聲明一個

公共類HelloWorldApplet,用extends指明它是Applet的子類。在

類中,我們重寫父類Ap-plet的paint()方法,其中參數(shù)g為Graphics

類,它表明當(dāng)前作畫的上下文。在paint。方法中,調(diào)用g的方法

drawString(),在坐標(biāo)(20,20)處輸出字符串“HelloWorld!〃,其中坐

標(biāo)是用象素點來表示的。

這個程序中沒有實現(xiàn)main。方法,這是Applet與應(yīng)用程序

Application(如例1)的區(qū)別之一。為了運行該程序,首先我們也要

把它放在文件HelloWorldApplet.java中,然后對它進行編譯:C:\

>javacHelloWor1dApplet.java

得到字節(jié)碼文件HelloWorldApplet.classo由于Applet中沒有

main。方法作為Java解釋器的入口,我們必須編寫HTML文件,把該

Applet嵌入其中,然后用appletviewer來運行,或在支持Java的瀏

覽器上運行。它的VHTML>文件如下:

<HTML>

<HEAD>

<TITLE>AnApplet</TITLE>

</HEAD>

<B0DY>

<appletcode=,/HelloWorldApplet.class,/width=200height=40>

</applet>

</BODY>

</HTML>

其中用〈applet〉標(biāo)記來啟動HelloWorldApplet,code指明字節(jié)碼

所在的文件,width和height指明applet所占的大小,我們把這個

HTML文件存入Example,html,然后運行:

C:\>appleviewerExample,html

這時屏幕上彈出一個窗口,其中顯示HelloWorld!,顯示結(jié)果如圖:

從上述例子中可以看出,Java程序是由類構(gòu)成的,對于一個應(yīng)用程序

來說,必須有一個類中定義main。方法,而對applet來說,它必須作

為Applet的一個子類。在類的定義中,應(yīng)包含類變量的聲明和類中

方法的實現(xiàn)。Java在基本數(shù)據(jù)類型、運算符、表達式、控制語句等

方面與C、C++基本上是相同的,但它同時也增加了一些新的內(nèi)容,在

以后的各章中,我們會詳細(xì)介紹。本節(jié)中,只是使大家對Java程序有

一個初步的了解。

第二章數(shù)據(jù)類型

§2.1數(shù)據(jù)類型

數(shù)據(jù)類型指明了變量或表達式的狀態(tài)和行為。Java的數(shù)據(jù)類型如下

所示:

Java不支持C、C++中的指針類型、結(jié)構(gòu)體類型和共用體類型。

本章我們主要介紹簡單類型。

§2.2常量與變量

一、常量

Java中的常量值是用文字串表示的,它區(qū)分為不同的類型,如整型常

量123,實型常量1.23,字符常量'a',布爾常量true、false以及

字符串常量"Thisisaconstantstring."。與C>C++不同,Java

中不能通過#define命令把一個標(biāo)識符定義為常量,而是用關(guān)鍵字

final來實現(xiàn),如finaldoublePI=3.14159(有關(guān)final的用法見

[6.2,3])o

二、變量

變量是Java程序中的基本存儲單元,它的定義包括變量名、變量類

型和作用域兒個部分。

①變量名是一個合法的標(biāo)識符,它是字母、數(shù)字、下劃線或美元符〃

$〃的序列,Java對變量名區(qū)分大小寫,變量名不能以數(shù)字開頭,而且

不能為保留字。合法的變量名如:myName、value-1>dollar$等。

非法的變量名如:2mail、room#、class(保留字)等,變量名應(yīng)具有一

定的含義,以增加程序的可讀性。

②變量類型可以為上面所說的任意一種數(shù)據(jù)類型。

③變量的作用域指明可訪問該變量的一段代碼。聲明一個變量的同

時也就指明了變量的作用域。按作用域來分,變量可以有下面兒種:

局部變量、類變量、方法參數(shù)、例外處理參數(shù)。局部變量在方法或

方法的一塊代碼中聲明,它的作用域為它所在的代碼塊(整個方法或

方法中的某塊代碼)。

類變量在類中聲明,而不是在類的某個方法中聲明,它的作用域是整

個類。

方法參數(shù)傳遞給方法,它的作用域就是這個方法。

例外處理參數(shù)傳遞給例外處理代碼,它的作用域就是例外處理部分。

在一個確定的域中,變量名應(yīng)該是唯一的。通常,一個域用大括號{}

來劃定。

有關(guān)類變量、參數(shù)傳遞以及例外處理將分別在[6.7.1]、[6.2.4]和

第八章中講述。

④變量的聲明格式為:

typeidentifier[=value][,identifier[=value]?,?];

例如:inta,b,c;

doubledl,d2=0.0;

其中,多個變量間用逗號隔開,d2=0.0對實型變量d2賦初值0.0,只

有局部變量和類變量是可以這樣賦初值的,而方法參數(shù)和例外處理

參數(shù)的變量值是由調(diào)用者給出的。

§2.3整型數(shù)據(jù)

一、整型常量:

與C,C++相同,Java的整常數(shù)有三種形式:

①十進制整數(shù),如123,-456,0

②八進制整數(shù),以0開頭,如0123表示十進制數(shù)83,-011表示十進制

數(shù)-9。

③十六進制整數(shù),以O(shè)x或0X開頭,如0x123表示十進制數(shù)291,-0X12

表示十進制數(shù)-18。

整型常量在機器中占32位,具有int型的值,對于long型值,則要在

數(shù)字后加L或1,如123L表示一個長整數(shù),它在機器中占64位。

二、整型變量:

整型變量的類型有byte、short、int、long四種。下表列出各類型

所在內(nèi)存的位數(shù)和其表示范圍。

目錄

JavaAH(一)

Java入門(二)

Java入門(三)

Java入門(四)

JavaAH(五)

Java入門(六)

JavaAH(七)

JavaAH(八)

JavaAH(九)

回應(yīng)刪除舉報廣告2008-06-0318:26:43克洛澤大地(DREG)

第二章數(shù)據(jù)類型(續(xù))

int類型是最常使用的一種整數(shù)類型。它所表示的數(shù)據(jù)范圍64位處

理器。但對于大型計算,常會遇到很大的整數(shù),超出int類所表示的

范圍,這時要使用long類型。

由于不同的機器對于多字節(jié)數(shù)據(jù)的存儲方式不同,可能是低字節(jié)向

高字節(jié)存儲,也可能是從高字節(jié)向低字節(jié)存儲,這樣,在分析網(wǎng)絡(luò)協(xié)

議或文件格時,為了解決不同機器上的字節(jié)存儲順序問題,用byte

類型來表示數(shù)據(jù)是合適的。而通常情況下,由于其表示的數(shù)據(jù)范圍

很小,容易造成溢出,應(yīng)避免使用。

short類型則很少使用,它限制數(shù)據(jù)的存儲為先高字節(jié),后低字節(jié),這

樣在某些機器中會出錯。

三、整型變量的定義,如:

byteb;〃指定變量b為byte型

shorts;〃指定變量s為short型

inti;〃指定變量i為int型

long1;〃指定變量1為long型

§2.4浮點型(實型)數(shù)據(jù)

一、實型常量

與C,C++相同,Java的實常數(shù)有兩種表示形式:

①十進制數(shù)形式,由數(shù)字和小數(shù)點組成,且必須有小數(shù)點,如

0.123,.123,123.,123.0

②科學(xué)計數(shù)法形式。如:123e3或123E3,其中e或E之前必須有數(shù),

且e或E后面的指數(shù)必須為整數(shù)。實常數(shù)在機器中占64位,具有

double型的值。對于float型的值,要在數(shù)字后加f或F,如12.3F,

它在機器中占32位,且表示精度較低。

二、實型變量

實型變量的類型有float和double兩種,下表列出這兩種類型所占

內(nèi)存的位數(shù)和其表示范圍。

數(shù)據(jù)類型所占位數(shù)數(shù)的范圍

float323.4e-038?3.4e+038

double641.7e-308?1.7e+308

雙精度類型double比單精度類型float具有更高的精度和更大表示

范圍,常常使用。

三、實型變量定義,如

floatf;〃指定變量f為float型

doubled;〃指定變量d為double型

[注]與C、C++不同,Java中沒有無符號型整數(shù),而且明確規(guī)定了整型

和浮點型數(shù)據(jù)所占的內(nèi)存字節(jié)數(shù),這樣就保證了安全性、魯棒性和平

臺無關(guān)性。

§2.5字符型數(shù)據(jù)

一、字符常量

字符常量是用單引號括起來的一個字符,如'a',?夕卜,與C、

C++相同,Java也提供轉(zhuǎn)義字符,以反斜杠(\)開頭,將其后的字符轉(zhuǎn)

變?yōu)榱硗獾暮x,下?列出了Java中的轉(zhuǎn)義字符。

與C、C++不同,Java中的字符型數(shù)據(jù)是16位無符號型數(shù)據(jù),它表示

Unicode集,而不僅僅是ASCII集,例如\u0061表示ISO拉丁碼的'a'。

轉(zhuǎn)義字符描述

\dddl到3位8進制數(shù)據(jù)所表示的字符(ddd)

\uxxxxl到4位16進制數(shù)所表示的字符(xxxx)

''單引號字符

\\反斜杠字符

\r回車

\n換行

\f走紙換頁

\t橫向跳格

\b退格

二、字符型變量

字符型變量的類型為char,它在機器中占16位,其范圍為0-65535。

字符型變量的定義如:

charc='a';〃指定變量c為char型,且賦初值為‘a(chǎn)

與C、C++不同,Java中的字符型數(shù)據(jù)不能用作整數(shù),因為Java不供

無符號整數(shù)類型。但是同樣可以把它當(dāng)作整數(shù)數(shù)據(jù)來操作。

例如:

intthree=3;

charone=,1';

charfour=(char)(three+one);//four=,4'

上例中,在計算加法時,字符型變量one被轉(zhuǎn)化為整數(shù),進行相加,最

后把結(jié)果又轉(zhuǎn)化為字符型。

三、字符串常量

與C、C++相同,Java的字符串常量是用雙引號(")括起來的一串字

符,如"Thisisastring.\n"。但不同的是,Java中的字符串常量是作

為String類的一個對象來處理,而不是一個數(shù)據(jù)。有關(guān)類String,

我們將在第七章講述。

§2.6布爾型數(shù)據(jù)

布爾型數(shù)據(jù)只有兩個值,true和false,且它們不對應(yīng)于任何整值。

在流控制中常用到它

O布爾型變量的定義如:

booleanb=true;//定義b為布爾型變量,且初值為true

§2.7舉例

例2.1.下例中用到了前面提到的數(shù)據(jù)類型,并通過屏幕顯示們的值。

publicclassSimpleTypes(

publicstaticvoidmain(Stringargs[]){

byteb=0x55;

shorts=0x55ff;

inti=1000000;

longl=0xfffL;

charc=,c;

floatf=0.23F;

doubled=0.7E-3;

booleanbool=true;

System.out.printin("b="+b);

System.out.println("s="+s);

System.out.println("i="+i);

System.out.printin("1="+1);

System.out.printin("c="+c);

System.out.println("f="+f);

System.out.println("d="+d);

System.out.printIn(,zbool=,,+bool);

)

編譯并運行該程序,輸出結(jié)果為:

C:\>javaSimpleTypes

b=85

s=22015

i=1000000

1=4095

c=c

f=0.23

d=0.0007

bool=true

§2.8各類數(shù)值型數(shù)據(jù)間的混合運算

一、自動類型轉(zhuǎn)換

整型、實型、字符型數(shù)據(jù)可以混合運算。運算中,不同類?的數(shù)據(jù)先

轉(zhuǎn)化為同一類型

,然后進行運算。轉(zhuǎn)換從低級到高級,如下圖:

轉(zhuǎn)換規(guī)則為:

①(byte或short)opint^int

②(byte或short或int)oplongflong

③(byte或short或int或long)opfloat^-float

④(byte或short或int或long或float)opdouble^double

⑤charopintfint

其中,箭頭左邊表示參與運算的數(shù)據(jù)類型,。P為運算符(如力口減、乘、

除等),右邊表示轉(zhuǎn)換成的進行運算的數(shù)據(jù)類型。

例2.2

publicclassPromotion(

publicstaticvoidmain(Stringargs[]){

byteb=10;

charc=,a';

inti=90;

long1=555L;

floatf=3.5f;

doubled=l.234;

floatfl=f*b;//float*byte->float

intil=c+i;//char+int->int

longll=l+il;//long+int->ling

doubledl=fl/il-d;//float/int->float,float-double->

double}

)

二、強制類型轉(zhuǎn)換

高級數(shù)據(jù)要轉(zhuǎn)換成低級數(shù)據(jù),需用到強制類型轉(zhuǎn)換,如:

inti;

byteb=(byte)i;//把int型變量i強制轉(zhuǎn)換為byte型

這種使用可能會導(dǎo)致溢出或精度的下降,最好不要使用。

目錄

Java入門(一)

Java入門(二)

Java入門(三)

JavaAH(四)

Java入門(五)

JavaAH(六)

Java入門(七)

JavaAH(八)

JavaAH(九)

回應(yīng)刪除舉報廣告2008-06-0318:26:55克洛澤大地(DREG)

第三章運算符和表達式

運算符指明對操作數(shù)所進行的運算。按操作數(shù)的數(shù)目來分+-),二元

運算符(如+、>)和三元運算符(如?:),它們分別對應(yīng)于一于一元運

算符來說,可以有前綴表達式(如++i)和后綴表達式(如采用中綴表

達式(如a+b)。按照運算符功能來分,基本的運算符?下面幾類:

算術(shù)運算符*,/,%,++,一)

關(guān)系運算符(>,V,>=,<=,==,!=)

布爾邏輯運算符(!,&&,II)

位運算符(>>,<<,>>>,&,|/,~)

賦值運算符(=,及其擴展賦值運算符如+=)

條件運算符(?:)

其它(包括分量運算符-,下標(biāo)運算符口,實例運算符instanceof,內(nèi)

存分配運算符new,強制類型轉(zhuǎn)換運算符(類型),方法調(diào)用運算符()

等)

本章中我們主要講述前6類運算符。

§3.1算術(shù)運算符

算術(shù)運算符作用于整型或浮點型數(shù)據(jù),完成算術(shù)運算。

一、二元算術(shù)運算符,如下表所示

運算符

用法

描述

+opl+op2加

-opl-op2減

*opl*op2乘

/opl/op2除

%opl%op2取模(求余)

Java對加運算符進行了擴展,使它能夠進行字符串的連接,如“

abc〃+〃de〃,得到串“abcde"。我們將在第七章中講解。

與C、C++不同,對取模運算符%來說,其操作數(shù)可以為浮點數(shù),如

37.2%10=7.2o

二、一元算術(shù)運算符,如下表所示:

運算符

用法

描述

++op正值

--op負(fù)值

++++op,op++加1

----op,op--減1

i++與++i的區(qū)別

i++在使用i之后,使i的值加1,因此執(zhí)行完i++后,整個表達式的?

為i,而i的值變?yōu)閕+lo

++i在使用i之前,使i的值加1,因此執(zhí)行完++i后,整個表達式和i

的值均為i+lo

對i一與一i同樣。

例3.1.下面的例子說明了算術(shù)運算符的使用

publicclassArithmaticOp{

publicstaticvoidmain(Stringargs[]){

inta=5+4;//a=9

intb=a*2;〃b=18

intc=b/4;//c=4

intd=b-c;//d=14

inte=-d;//e=-14

intf=e%4;//f=-2

doubleg=18.4;

doubleh=g%4;//h=2.4

inti=3;

intj=i++;//i=4,j=3

intk=++i;//i=5,k=5

System.out.printin("a="+a);

System.out.printin("b="+b);

System,out.printIn("c="+c);

System.out.println("d="+d);

System.out.printIn("e="+e);

System,out.println("f="+f);

System,out.println("g="+g);

System,out.printIn(/,h=/,+h);

System,out.printin("i="+i);

System,out.printin("j="+j);

System,out.printin("k="+k);

}

)

其結(jié)果為:

C:\>javaArithmaticOp

a=9

b=18

c=4

d=14

e=-14

f=-2

g=18.4

h=2.4

i=5

j=3

k=5

§3.2關(guān)系運算符

關(guān)系運算符用來比較兩個值,返回布爾類型的值true或false?關(guān)系

運算符都是二元運算符,如下表所示:

運算符

用法

返回true的情況

>opl>op2opl大于op2

>+opl>=op2opl大于或等于op2

<opl<op2opl小于op2

<=opl<=op2opl小于或等于op2

==opl==op2opl與op2相等

!=opl!=op2opl與op2不等

Java中,任何數(shù)據(jù)類型的數(shù)據(jù)(包括基本類型和組合類型)都可以通

過==或!=來比較是否相等(這與C、C++不同)。

關(guān)系運算的結(jié)果返回true或false,而不是C、C++中的1或0。

關(guān)系運算符常與布爾邏輯運算符一起使用,作為流控制語?的判斷條

件。如

if(a>b&&b==c)

§3.3布爾邏輯運算符

布爾邏輯運算符進行布爾邏輯運算,如下表所示:

oplop2opl&&op2opl||op2!opl

falsefalsefalsefalsetrue

falsetruefalsetruetrue

truefalsefalsetruefalse

truetruetruetruefalse

-&&、II為二元運算符,實現(xiàn)邏輯與、邏輯或。

?!為一元運算符,實現(xiàn)邏輯非。

?對于布爾邏輯運算,先求出運算符左邊的表達式的值,對或運算如果

為true,則整個表達式的結(jié)果為true,不必對運算符右邊的表達式

再進行運算;同樣,對與運算,如果左邊表達式的值為false,則不必

對右邊的表達式求值,整個表達式的結(jié)果為falseo

下面的例子說明了關(guān)系運算符和布爾邏輯運算符的使用。

publicclassRelationAndConditionOp{

publicstaticvoidmain(Stringargs[]){

inta=25,b=3;

booleand=a<b;//d=false

System,out.println(/,a<b=,/+d);

inte=3;

if(e!=0&&a/e>5)

System,out.printIn(,,a/e=,/+a/e);

intf=0;

if(f!=0&&a/f>5)

System,out.printin(,,a/f=,,+a/f);

else

System.out.printIn(,,f=,,+f);

其運行結(jié)果為:

C:\>javaRelationAndConditionOp

a<b=false

a/e=8

f=0

注意:上例中,第二個if語句在運行時不會發(fā)生除。溢出的錯,因為

e!=0為false,所以就不需要對a/e進行運算。

§3.4位運算符

位運算符用來對二進制位進行操作,Java中提供了如下表所的位運

算符:位運算符中,除?以外,其余均為二元運算符。操作數(shù)只

能為整型和字符型數(shù)據(jù)。

3.4.1補碼

Java使用補碼來表示二進制數(shù),在補碼表示中,最高位為符號?,正數(shù)

的符號位為0,負(fù)數(shù)為1。補碼的規(guī)定如下:

對正數(shù)來說,最高位為0,其余各位代表數(shù)值本身(以二進制?示),如

+42的補碼為00101010c

對負(fù)數(shù)而言,把該數(shù)絕對值的補碼按位取反,然后對整個數(shù)1,即得該

數(shù)的補碼。如-42的補碼為11010110(00101010按位取反

11010101+111010110)

用補碼來表示數(shù),0的補碼是唯一的,都為00000000。(而在原碼,反

碼表示中,+0和-0的表示是不唯一的,可參見相應(yīng)的書籍)。而且可

以用111111表示的補(這也是補碼與原碼和反碼的區(qū)別)。

3.4.2按位取反運算符?

?是一元運算法,對數(shù)據(jù)的每個二進制位取反,即把1變?yōu)?,把0

變?yōu)?。例如:

0010101

1101010

注意,?運算符與-運算符不同,?217-21。

3.4.3按位與運算符&

參與運算的兩個值,如果兩個相應(yīng)位都為1,則該位的結(jié)果為1例如:

0010101

?1101010

注意,?運算符與-運算符不同,?21N-21。

3.4.3按位與運算符&

參與運算的兩個值,如果兩個相應(yīng)位都為1,則該位的結(jié)果為1,否則

為0。即:

0&0=0,0&1=0,1&0=0,1&1=1

目錄

Java入門(一)

Java入門(二)

Java入門(三)

JavaAH(四)

JavaAH(五)

Java入門(六)

Java入門(七)

JavaAH(八)

JavaAH(九)

回應(yīng)刪除舉報廣告2008-06-0318:27:07克洛澤大地(DREG)

第四章流控制

與C、C++相同,Java程序通過流控制來執(zhí)行程序流,完成一定?個語

句組成的。語句可以是單一的一條語句(如c=a+b;),也可以復(fù)合語

句。

下面我們分別來介紹Java中的流控制語句,包括

1.分支語句:if-else,break,switch,return.

2.循環(huán)語句:while,do-while,for,continue.

3.例外處理語句:try-catch-finally,throw

最后我們簡單介紹一下注釋語句。

§4.1分支語句

分支語句提供了一種控制機制,使得程序的執(zhí)行可以跳過?些語句不

執(zhí)行,而轉(zhuǎn)去執(zhí)行特定的語句。

4.1.1條件語句if-else.

if-else語句根據(jù)判定條件的真假來執(zhí)行兩種操作中的一種,?的格

式為:

if(boolean-expression)

statement1;

[else

statement2;]

1.布爾表達式boolean-expression是任意一個返回布爾型數(shù)據(jù)的

達式(這比C、C++的限制要嚴(yán)格)。

2.每個單一的語句后都必須有分號。

3.語句statement!,statement2可以為復(fù)合語句,這時要用大括號(}?

起。建議對單一的語句也用大括號括起,這樣程序的可讀性強,而且

有利于程序的擴充(可以在其中填加新的語句)。{}外面不加分號。

4.else子句是任選的。

5.若布爾表達式的值為true,則程序執(zhí)行statement!.,否則執(zhí)行sta

tement2o

6.if-else語句的一種特殊形式為:

if(expression!){

statementl

}elseif(expression2){

statement2

}elseif(expressionM){

statementM

}else{

statementN

else子句不能單獨作為語句使用,它必須和if配對使用。else總是

與離它最近的if配對。可以通過使用大括號{}來改變配對關(guān)系。

7.舉例:

例4.1比較兩個數(shù)的大小,并按從小到大的次序輸出。

publicclassCompareTwo{

publicstaticvoidmain(Stringargs[]){

doubledl=23.4;

doubled2=35.1;

if(d2>=dl)

System,out.printin(d2+,,>=,,+dl);

else

System,out.printin(dl+,,>=,,+d2);

}}運行結(jié)果為:

C:\>javaCompareTwo

35.1>=23.4

例4.2判斷某一年是否為閏年。

閏年的條件是符合下面二者之一:①能被4整除,但不能被100整除;

②能被4整除,又能被100整除。

publicclassLeapYear{

publicstaticvoidmain(Stringargs[]){

intyear=1989;//methodi

if((year%4==0&&year%l00!=0)||(year%400==0))

System,out.printIn(year+^isaleapyear.z,);

else

System,out.printIn(year+^isnotaleapyear.,z);

year=2000;//method2

booleanleap;

if(year%4!=0)

leap=false;

elseif(year%100!=0)

leap=true;

elseif(year%400!=0)

leap=false;

else

leap=true;

if(leap==true)

System,out.printIn(year+^isaleapyear.z/);

else

System,out.printIn(year+^isnotaleapyear.;

year=2050;//method3

if(year%4==0){

if(year%100==0){

if(year%400==0)

leap=true;

else

leap=false;

}else

leap=false;

}else

leap=false;

if(leap==true)

System,out.printIn(year+,zisaleapyear.");

else

System,out.printIn(year+,zisnotaleapyear.");

運行結(jié)果為

C:\>javaLeapYear

1989isnotaleapyear.

2000isaleapyear.

2050isnotaleapyear.

該例中,方法1用一個邏輯表達式包含了所有的閏年條件,方?2使用

了if-else語句的特殊形式,方法3則通過使用大括號{}對if-else

進行匹配來實現(xiàn)閏年的?斷。大家可以根據(jù)程序來對比這三種方法,

體會其中的聯(lián)系和區(qū)別,在不同的場合選用適?的方法。

4.1.2多分支語句switch

switch語句根據(jù)表達式的值來執(zhí)行多個操作中的一個,它的般格式

如下:

switch(expression){

casevaluel:statementl;

break;

casevalue2:statement2;

break;

casevalueN:statemendN;

break;

[default:defaultstatement;]

1.表達式expression可以返回任一簡單類型的值(如整型、實?、字

符型),多分支語句把表達式返回的值與每個case子句中的值相比。

如果匹配成功,則?行該case子句后的語句序歹人

2.case子句中的值valuel必須是常量,而且所有case子句中的值是

不同的。

3.default子句是任選的。當(dāng)表達式的值與任一case子句中的?都

不匹配時,程序執(zhí)行default后面的語句。如果表達式的值與任一

case子句中的值都不?配且沒有default子句,則程序不作任何操

作,而是直接跳出switch語句。

4.break語句用來在執(zhí)行完一個case分支后,使程序跳出switch語?,

即終止switch語句的執(zhí)行。因為case子句只是起到一個標(biāo)號的作

用,用來查找匹配的入口?從此處開始執(zhí)行,對后面的case子句不

再進行匹配,而是直接執(zhí)行其后的語句序列,因此該在每個case分

支后,要用break來終止后面的case分支語句的執(zhí)行。在一些特殊

情況下,多個不同的case值要執(zhí)行一組相同的操,這時可以不用

breako

5.case分支中包括多個執(zhí)行語句時一,可以不用大括號{}括起。

6.switch語句的功能可以用if-else來實現(xiàn),但在某些情況下,使

switch語句更簡煉,可讀性強,而且程序的執(zhí)行效率提高。

7.舉例J:

例4.3.根據(jù)考試成績的等級打印出百分制分?jǐn)?shù)段。

publicclassGradeLevel{

publicstaticvoidmain(Stringargs[]){

System.out.printin("\n**firstsituation**");

chargrade=,C);//normaluse

switch(grade){

case'A;:System,out.printIn(grade+,zis85?100”);

break;case'B':System,out.printin(grade+,zis70?84〃);

break;case'C):System,out.printin(grade+,zis60?69");

break;case'D):System,out.printin(grade+,zisV60");

break;default:System,out.printin(''inputerror");

}System.out.printin('\n**secondsituation**");

grade='A';//createrrorwithoutbreakstatement

switch(grade){

case'A'System,out.printin(grade+“is85?100”);

case'B):System,out.printin(grade+,,is70~84,/);

case'C'System.out.printin(grade+"is60~69");

case'D':System,out.printin(grade+,,is<60,/);

default:System.out.printin("inputerror");

}System,out.printin("\n**thirdsituation**");

grade=,B';//severalcasewithsameoperation

switch(grade){

case'A':

case'B':

case'C':System,out.printin(grade+,,is>=60,/);

break;case'D):System,out.printin(grade+,,is<60,/);

break;default:System,out.printin(,,inputerror,/);

運行結(jié)果為

C:\>javaGradeLevel

****firstsituation****

Cis60?69

****secondsituation****

Ais85-100

Ais70?84

Ais60?69

Ais<60

inputerror

****thirdsituation****

Bis>=60

從該例中我們可以看到break語句的作用。

4.1.3break語句

1.在switch語中,break語句用來終止switch語句的執(zhí)行。使程序

switch語句后的第一個語句開始執(zhí)行。

2.在Java中,可以為每個代碼塊加一個括號,一個代碼塊通常用大

括號{}括起來的一段代碼。加標(biāo)號的格式如下:

BlockLabel:{codeBlock}

break語句的第二種使用情況就是跳出它所指定的塊,并從緊?該塊

的第一條語句處執(zhí)行。其格式為:

breakBlockLabel;

例如:

a:{……〃標(biāo)記代碼塊a

b:{……〃標(biāo)記代碼塊b

c:{……〃標(biāo)記代碼塊c

breakb;

...//willnotbeexecuted

//willnotbeexecuted

//willnotbeexecuted

/executefromhere

3.與C、C++不同,Java中沒有g(shù)oto語句來實現(xiàn)任意的跳轉(zhuǎn),因為goto

語句破壞程序的可讀性,而且影響編譯的優(yōu)化。但是從上例可以看

出,Java用break來實現(xiàn)goto語句所特有的一些優(yōu)點。如果brea

以介紹面向?qū)ο缶幊痰幕靖拍?、基本理論為重點,結(jié)合Java語言

的語法規(guī)則、編程特點和設(shè)計思想、強調(diào)容易發(fā)生錯誤和編程應(yīng)注意

的地方,使學(xué)生能對Java技術(shù)有一個總體了解,通過本課程學(xué)習(xí),

使學(xué)生掌握J(rèn)ava語言的基礎(chǔ)知識,理解和掌握面向?qū)ο蟪绦蛟O(shè)計的

基本思想,熟練地使用Java語言進行程序的編寫、編譯以及調(diào)試工

作k后所指定的標(biāo)號不是一個代碼塊的標(biāo)號,而是一個?句,則這時

break完全實現(xiàn)goto的功能。不過應(yīng)該避免這種方式的使用。

目錄

Java入門(一)

Java入門(二)

JavaAH(三)

Ja

溫馨提示

  • 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

提交評論