版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版原創(chuàng)漫畫改編聘用合同3篇
- 2025年度柴油零售合同(社區(qū)加油站合作)4篇
- 2025版物流運輸合同擔(dān)保及貨物保險范本4篇
- 二零二五年電子商務(wù)合伙人股份合作合同3篇
- 2025年度綠色能源廠房租賃服務(wù)合同4篇
- 二零二五版股份代持合同解除協(xié)議書6篇
- 二零二五年度貨物存放與動態(tài)庫存管理服務(wù)協(xié)議3篇
- 2025年度廠區(qū)配電系統(tǒng)電氣火災(zāi)預(yù)防合同4篇
- 2025年智能電網(wǎng)專用箱式變壓器采購合同示范文本6篇
- 二零二五年度鋼材運輸與市場波動應(yīng)對合同3篇
- 2025年度版權(quán)授權(quán)協(xié)議:游戲角色形象設(shè)計與授權(quán)使用3篇
- 2024年08月云南省農(nóng)村信用社秋季校園招考750名工作人員筆試歷年參考題庫附帶答案詳解
- 防詐騙安全知識培訓(xùn)課件
- 心肺復(fù)蘇課件2024
- 2024年股東股權(quán)繼承轉(zhuǎn)讓協(xié)議3篇
- 2024-2025學(xué)年江蘇省南京市高二上冊期末數(shù)學(xué)檢測試卷(含解析)
- 四川省名校2025屆高三第二次模擬考試英語試卷含解析
- 《城鎮(zhèn)燃?xì)忸I(lǐng)域重大隱患判定指導(dǎo)手冊》專題培訓(xùn)
- 湖南財政經(jīng)濟學(xué)院專升本管理學(xué)真題
- 考研有機化學(xué)重點
- 全國身份證前六位、區(qū)號、郵編-編碼大全
評論
0/150
提交評論