




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章語(yǔ)言概論
考點(diǎn)一Java語(yǔ)言簡(jiǎn)介
1、Java語(yǔ)言的由來(lái)
1991年,Sun公司開(kāi)發(fā)了一個(gè)Oak(-一種橡樹(shù)名字)軟件,它是Java的前身,1995年Oak更
名為Java。
2、Java語(yǔ)言的特點(diǎn)及優(yōu)勢(shì)
(1)簡(jiǎn)單易學(xué)
(2)利用面向?qū)ο蠹夹g(shù)
(3)分布式計(jì)算
(4)健壯性(也稱魯棒性)
(5)安全性
(6)跨平臺(tái)(即體系結(jié)構(gòu)中立)
(7)可移植性
(8)解釋執(zhí)行
(9)高性能
(10)多線程
(11)動(dòng)態(tài)性
(12)Applet的特點(diǎn)
3、Java語(yǔ)言實(shí)現(xiàn)的機(jī)制
(l)Java虛擬機(jī)
Java程序的下載和執(zhí)行步驟如下:
①程序經(jīng)編譯器得到字節(jié)代碼;
②瀏覽器與服務(wù)器連接,要求下載字節(jié)碼文件:
③服務(wù)器將字節(jié)碼文件傳給客戶機(jī);
④客戶機(jī)上的解釋器執(zhí)行字節(jié)代碼文件;
⑤在瀏覽器上顯示并交互。
虛擬機(jī)(VM)的執(zhí)行過(guò)程有3個(gè)特點(diǎn):
①多線程:
②動(dòng)態(tài)連接:
③異常處理。
(2)垃圾回收機(jī)制
(3)代碼安全檢測(cè)
考點(diǎn)二Java的體系結(jié)構(gòu)
前面已說(shuō)到Java以JVM為基礎(chǔ),實(shí)際上,許多JVM也是由軟件實(shí)現(xiàn)的。Java的體系結(jié)構(gòu)
如下所示。
1、JDK目錄結(jié)構(gòu)
bin目錄下有編譯器、解釋器和許多工具(如服務(wù)器工具、IDL、package工具和jdb等
demo目錄下有各種演示例子。
include目錄下是Win32子目錄,都是本地方法文件。
jre目錄是Java程序運(yùn)行環(huán)境的代碼庫(kù)、屬性設(shè)置和資源文件,默認(rèn)安裝目錄,安全管理。
lib目錄下都是庫(kù)文件。
src.zip是源碼壓縮文件。
2、Java的API結(jié)構(gòu)
Java語(yǔ)言以類為程序的基本單位,類(Class)是具有某些共同特性實(shí)體的集合,是一種抽象的
概念,它實(shí)質(zhì)是一種對(duì)象類型的定義,即對(duì)具有相同行為對(duì)象的一種抽象,說(shuō)明該類型對(duì)象
的性質(zhì)。在Java語(yǔ)言中,類是具有某種功能的基本模塊的描述,它所提供的標(biāo)準(zhǔn)類庫(kù),為
編程所需的底層模塊提供了常用的方法和接口,并將它們分類封裝成包,每個(gè)包又包括子兇,
形成樹(shù)結(jié)構(gòu)的類層次。類庫(kù)主要包括核心java、javax和org擴(kuò)展包。
3、Java程序結(jié)構(gòu)
Java程序包括源代碼(.java文件)、由編譯器生成的類(.class文件)、由歸檔工具jar生成的.jar
文件、對(duì)象狀態(tài)序列化.ser文件。
(l)package語(yǔ)句,0或1個(gè),指定源文件存入所指定的包中,該語(yǔ)句必須在文件之首,如沒(méi)
有此語(yǔ)句,源文件存入當(dāng)前目錄下。
(2)import語(yǔ)句,0或多個(gè),必須在所有類定義之前引入標(biāo)準(zhǔn)類。
(3)publicclassDefinition,0或1個(gè),指定應(yīng)用程序類名,也是源文件名。
(4)classDdfinition,0或多個(gè),類定義。
(5)interfaceDefinition,0或多個(gè),接口定義。
提示:Java是區(qū)分大小寫(xiě)的。源文件名與程序類名必須相同,其擴(kuò)展名為.java,源文件中最
多有一個(gè)public類,其他類的個(gè)數(shù)不限。
4、Java有2類應(yīng)用程序,JavaApplication和JavaApplet。前者是獨(dú)立的應(yīng)用程序,而后者
嵌入HTML在瀏覽器中執(zhí)行。
JavaApplication應(yīng)用程序的編寫(xiě)和執(zhí)行分3步進(jìn)行:
(1)編寫(xiě)源代碼。
(2)編譯源代碼。
(3)解釋執(zhí)行,利用j2sdkl.4.2的解釋器javaexe執(zhí)行。
JavaApplet應(yīng)用程序的編寫(xiě)和執(zhí)行共分4步進(jìn)行:
⑴編寫(xiě)源代碼,這步與JavaApplication應(yīng)用程序相同,編輯??個(gè)源文件存入指定文件夾中。
注意,該程序不含main方法。
(2)編寫(xiě)HTML文件調(diào)用該小程序,以.html為護(hù)展名存入相同文件夾。
(3)編譯過(guò)程,與javaApplication應(yīng)用程序相同,編譯應(yīng)用程序的java部分。
(4)解釋執(zhí)行,同樣在DOS方式下,輸入命令:appletviewerfilename.html(這里的filename.
不要求與java文件同名)。如無(wú)錯(cuò)誤,顯示結(jié)果,如有出錯(cuò)報(bào)告,排錯(cuò)后,重復(fù)上面解釋執(zhí)
行。
第2章簡(jiǎn)單數(shù)據(jù)類型
考點(diǎn)一概述
在Java語(yǔ)言中,所有的變量、常量、對(duì)象和類都是用標(biāo)識(shí)符命名的,標(biāo)識(shí)符的命名規(guī)則為:
⑴標(biāo)識(shí)符是以字母、下劃線(_)、美元符叫()作為首字符的字符串序列。在首字符后面可以跟
字母、下劃線(_)、美元符叫()和。
(2)標(biāo)識(shí)符是區(qū)分大小寫(xiě)的。
(3)標(biāo)識(shí)符的字符數(shù)目沒(méi)有限制,但為便于閱讀和記憶,不宜太長(zhǎng)。
Java語(yǔ)言的數(shù)據(jù)類型如下圖所示。
數(shù)據(jù)類型簡(jiǎn)單數(shù)據(jù)類型數(shù)值類型
字符類型char)整數(shù)類型(byte,int,long,short)
浮點(diǎn)數(shù)類型(float,double)
布爾類型(boolean)
復(fù)合數(shù)據(jù)類型類(class)
接口(interface)
數(shù)組
Java語(yǔ)言的數(shù)據(jù)類型
考點(diǎn)二簡(jiǎn)單數(shù)據(jù)類型
1、整型數(shù)據(jù)
整型數(shù)據(jù)分整型常量和整型變量。
整型常量分3種書(shū)寫(xiě)格式:
(1)十進(jìn)制整數(shù)。
(2)八進(jìn)制整。
(3)十六進(jìn)制整數(shù)。
與整型常量相同,java語(yǔ)言提供了byte、short、int和long4種類型的整型變量。
2、浮點(diǎn)型數(shù)據(jù)
浮點(diǎn)型數(shù)據(jù)屬于實(shí)型數(shù)據(jù),分float和double兩種類型,也有實(shí)型常量和實(shí)型變量之分。浮
點(diǎn)型數(shù)據(jù)由數(shù)字和小數(shù)組成,必須有小數(shù)位數(shù)bit越多,表示數(shù)越精確。
3、布爾型數(shù)據(jù)
布爾型數(shù)據(jù)只有兩個(gè)值:true(真)和false(假),它不對(duì)應(yīng)任何數(shù)值,因此,它不能與數(shù)字進(jìn)行
相互轉(zhuǎn)換,布爾型數(shù)據(jù)一般用于邏輯判別,在流控制中常用,它在計(jì)算機(jī)內(nèi)存占1位bit,
默認(rèn)值(局部變量除外)為false,
4、字符型數(shù)據(jù)
(1)字符常量
字符常量是用單號(hào)括起來(lái)的一個(gè)字符,如《、'@1用雙撇號(hào)括起來(lái)的是字符串,
如"s"、"Shanghua"。一般說(shuō),凡是Unicode的字符都可以括起來(lái)作為字符常量,但對(duì)有一些
字符必須用轉(zhuǎn)義字符來(lái)表示,如單撇號(hào)本身、換行符等。轉(zhuǎn)義字符以反斜杠(開(kāi)頭,如表
示單撇號(hào)(')、“n”表示換行符。
(2)字符變量
字符變量以char類型表示,它在內(nèi)存中占16位bit,表示范圍是0?65535,它不能當(dāng)做整
數(shù)使用?char類型的值可轉(zhuǎn)換成int類型,但反過(guò)來(lái),將int轉(zhuǎn)換成char類型必須用強(qiáng)制執(zhí)
行。
考點(diǎn)三各類數(shù)據(jù)之間的轉(zhuǎn)換
1、優(yōu)先關(guān)系
自動(dòng)類型轉(zhuǎn)換是由按優(yōu)先關(guān)系從低級(jí)數(shù)據(jù)轉(zhuǎn)換成高級(jí)數(shù)據(jù),規(guī)定的優(yōu)先次序是:
byte,short,charintlongfloatdouble
2、類型的自動(dòng)轉(zhuǎn)換規(guī)則
不同類型數(shù)據(jù)之間的轉(zhuǎn)換規(guī)則歸納如下:
操作數(shù)1的數(shù)據(jù)類型操作數(shù)2的數(shù)據(jù)類型轉(zhuǎn)換后的數(shù)據(jù)類型
byte或intintint
byte或short或intlonglong
byte或short或int或longfloatfloat
byte或short或int或long或floatdoubledouble
charintint
3、類型的強(qiáng)制轉(zhuǎn)換
將較長(zhǎng)的數(shù)據(jù)類型轉(zhuǎn)換成較短類型,只能用強(qiáng)制類型轉(zhuǎn)換,通常都用賦值語(yǔ)句來(lái)實(shí)現(xiàn),在要
求強(qiáng)制的變量名前面用()括上所要強(qiáng)制轉(zhuǎn)換的類型符。
考點(diǎn)四Java類庫(kù)中對(duì)簡(jiǎn)單類型數(shù)據(jù)的類包裝
在Java語(yǔ)言中,簡(jiǎn)單數(shù)據(jù)類型是類包裝在類庫(kù)中,它們?cè)诨绢悗?kù)的層次如下所示:
classjava.lang.Object
classjava.lang.Boolean(implements)java.io.Serializable)
classjava.lang.Character(implements.lang.Comparable.java.io.Serializable)
classjava.lang.Number(implementsjavajo.Serializable)
classjava.lang.Byte(implementsjava.lang.Comparable)
classjava.lang.Double(implementsjava.lang.Comparable)
classjava.lang.Float(implementsjava.lang.Comparable)
classjava.lang.Integer(implementsjava.Iang.Comparable)
classjava.lang.Long(implementsjava.lang.Comparable)
classjava.lang.Short(implementsjava.lang.Comparable)
第3章運(yùn)算符和表達(dá)式
【考點(diǎn)一】概述
1、運(yùn)算符
對(duì)各種類型的數(shù)據(jù)進(jìn)行加工的過(guò)程稱為運(yùn)算,表示各種不同運(yùn)算的符號(hào)稱為運(yùn)算符,參與運(yùn)
算的數(shù)據(jù)稱為操作數(shù)。
按運(yùn)算符的操作數(shù)的數(shù)目劃分,可分為
(1)一元運(yùn)算符;
(2)二元運(yùn)算符;
(3)三元運(yùn)算符。
按運(yùn)算符的功能劃分,可以分為
(1)算術(shù)運(yùn)算符;
(2)關(guān)系運(yùn)算符;
(3)布爾邏輯運(yùn)算符;
(4)位運(yùn)算符;
(5)賦值運(yùn)算符;
(6)條件運(yùn)算符;
(7)其他。
2、表達(dá)式
表達(dá)式是同操作數(shù)和運(yùn)算符按?定的語(yǔ)法形式組成的符號(hào)序列。
表達(dá)式的類型指的是表達(dá)式運(yùn)算結(jié)束后的值的類型,由運(yùn)算符以及參與運(yùn)算的操作數(shù)的類型
決定。
【考點(diǎn)二】算術(shù)運(yùn)算符和算術(shù)表達(dá)式
1、一元算術(shù)運(yùn)算符
一元算術(shù)符涉及的操作數(shù)只有一個(gè),由一個(gè)操作數(shù)和元算術(shù)運(yùn)算符構(gòu)成一個(gè)算術(shù)表達(dá)式。
一元算術(shù)運(yùn)算符共有4種,如下所示。
運(yùn)算符名稱表達(dá)式功能
+—元加+opl取正值
--元減-opl取負(fù)值
++增量++op1,op1++加1
-減量--opl,opl-減1
一元加和一元減運(yùn)算符僅僅表示某個(gè)操作數(shù)的符號(hào),其操作結(jié)果為該操作數(shù)的正值或負(fù)值。
增量運(yùn)算符將操作數(shù)加1,如對(duì)浮點(diǎn)數(shù)進(jìn)行增量操作,則結(jié)果為加10。
減量運(yùn)算符將操作數(shù)減1,如對(duì)浮點(diǎn)數(shù)進(jìn)行減量操作則結(jié)果為減10。
2、二元算術(shù)運(yùn)算符
二元算術(shù)運(yùn)算符共有5種,如下所示。
運(yùn)算符表達(dá)式名稱及功能
+opl+op2加
-opl-op2減
*opl*op2乘
/opl/op2除
%opl%op2模數(shù)除(求余)
3、算術(shù)運(yùn)算符的優(yōu)先級(jí)
在稍微復(fù)雜一?些的算術(shù)表達(dá)式中,算術(shù)運(yùn)算符的優(yōu)先級(jí)按下面次序排列:++和-的級(jí)別最高,
然后是*和/以及%,而+和-的級(jí)別最低。此外,為了增強(qiáng)程序的可讀性,通過(guò)括號(hào)可以明顯
地改變運(yùn)算的順序。
【考點(diǎn)三】關(guān)系運(yùn)算符和關(guān)系表達(dá)式
關(guān)系運(yùn)算符都是二元運(yùn)算符,共有6種,如下所示。
運(yùn)算符表達(dá)式功能返回true值時(shí)的情況
>opl>op2比較op1是否大于op20Pl大于op2
<opl比較opl是否小于op2opl小于op2
>=opl>=op2比較opl是否大于等于op2opl大于等于op2
<=opl<=op2比較opl是否小于等于op2opl小于等于op2
==op2==op2比較opl是否等于op2opl等于op2
!=opl!=op2opl和op2不要等性測(cè)試opl不等于op2
【考點(diǎn)四】布爾邏輯運(yùn)算符和布爾邏輯表達(dá)式
布爾邏輯運(yùn)算符共有3種,即邏輯與(&&)、邏輯或(II)和邏輯非(!),其操作結(jié)
果也都是布爾型的。
【考點(diǎn)五】位運(yùn)算符和位運(yùn)算表達(dá)式
1、位邏輯運(yùn)算符
(1)按位取反運(yùn)算符。
(2)按位與運(yùn)算符&。
(3)按位或運(yùn)算符I0
(4)按位異或運(yùn)算符
(5)不同長(zhǎng)度的數(shù)據(jù)進(jìn)行位邏輯運(yùn)算。
2、移位運(yùn)算符
(1)算術(shù)右移運(yùn)算符〉〉。
(2)算術(shù)左移運(yùn)算符〈
(3)邏輯右移運(yùn)算符〉〉〉。
3、位運(yùn)算符的優(yōu)先級(jí)
在復(fù)雜一些的位運(yùn)算表達(dá)式中,位運(yùn)算符的優(yōu)先級(jí)順序排列如下:~的優(yōu)先級(jí)最高,其次是
〈〈、〉〉和〉〉〉,然后是&,再次是最后是I。
【考點(diǎn)六】賦值運(yùn)算符和賦值表達(dá)式
(1)賦值運(yùn)算符。
賦值運(yùn)算符(=)把一個(gè)表達(dá)式的值賦給一個(gè)變量,在賦值運(yùn)算符兩側(cè)的類型不一致情況下,
如果左側(cè)變量類型的級(jí)別高,則右側(cè)的數(shù)據(jù)被轉(zhuǎn)化為與左側(cè)相同的高級(jí)數(shù)據(jù)類型后賦給左側(cè)
變量:否則,需要使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符。
(2)擴(kuò)展賦值運(yùn)算符。
Java中擴(kuò)展賦值運(yùn)算符及等價(jià)的表達(dá)式。
運(yùn)算符表達(dá)式等效表達(dá)式
+=op1+=op2op1=op1+op2
-=op1-+op2opl+opl-op2
*=op1*=op2op1=op1*op2
/=opl/op2opl=opl/op2
%=opl%=op2opl=opl%op2
&=opl&=op2opl=opl&op2
I=oplI=op2opl=oplIop2
opl^=op2opl=opl^op2
〉〉=opl)〉=op2opl=opl>〉op2
〈(=opl〈(op2opl=opl〈(op2
〉〉〉=opl)〉〉=op2opl=opl)〉〉op2
【考點(diǎn)七】條件運(yùn)算符與條件表達(dá)式
條件運(yùn)算符是三元運(yùn)算符,用“?”和“:”表示。三元條件表達(dá)式的一般形式為:
expression!?expression2:expression3
其中表達(dá)式expression1應(yīng)該是關(guān)系或布爾邏輯表達(dá)式,其計(jì)算結(jié)果為布爾值。
【考點(diǎn)八】運(yùn)算符的優(yōu)先級(jí)和復(fù)雜表達(dá)式
Java中運(yùn)算符的優(yōu)先級(jí)順序。如下:
優(yōu)先次序運(yùn)算符優(yōu)先次序運(yùn)算符
I[]()9&
2++-!~instanceof10"
3new(type)11I
4*/%12&&
5+-13II
6〉〉〉〉〉<(14?:
7〉〈〉=〈=15=+=-=*=/=%=A=
8==!=16&=I=〈〈=〉〉=〉〉〉=
【考點(diǎn)九】表達(dá)式語(yǔ)句
在由++和-運(yùn)算符形成的一元算術(shù)表達(dá)式和賦值表達(dá)式后加上分號(hào)可直接作為語(yǔ)句來(lái)使用,
這種由表達(dá)式直接構(gòu)成的語(yǔ)句叫做表達(dá)式語(yǔ)句。
第4章流程控制
【考點(diǎn)一】概述
Java是面向?qū)ο蟮木幊陶Z(yǔ)言,通過(guò)構(gòu)造多個(gè)類之間的關(guān)系來(lái)完成程序的功能:但是在編寫(xiě)類
的時(shí)候,主要通過(guò)一定的程序流程來(lái)實(shí)現(xiàn)類中方法的功能。Java的程序流程是由若干條語(yǔ)句
組句塊或稱復(fù)合語(yǔ)句。
【考點(diǎn)二】分支語(yǔ)句
1、條件語(yǔ)句
條件語(yǔ)句根據(jù)判定條件的真假來(lái)決定執(zhí)行哪一種操作。
(1)if結(jié)構(gòu)
Java語(yǔ)言中,最簡(jiǎn)單的條件語(yǔ)句是if結(jié)構(gòu),采用的格式如下:
if(條件)statement;
或者
if(條件){block}
第一種情況下,在條件為真時(shí),執(zhí)行一條語(yǔ)句statement;否則跳過(guò)statement執(zhí)行下面的語(yǔ)
句。第二種情況下,在條件為真時(shí),執(zhí)行多條語(yǔ)句組成的代碼塊block;否則跳過(guò)block執(zhí)
行下面的語(yǔ)句。
上述格式中的“條件”為關(guān)系表達(dá)式或布爾邏輯表達(dá)式,其值為布爾值。
(2)if_else結(jié)構(gòu)
Java語(yǔ)言中,較常見(jiàn)的條件語(yǔ)句是if-else結(jié)構(gòu)。采用的格式如下:
if(條件)
statement1;或{block1}
else
statement2;或{block2}
在條件為真時(shí),執(zhí)行語(yǔ)句statement(或代碼塊blodkl),然后跳過(guò)else和statement2(或
代碼塊block2)執(zhí)行下面的語(yǔ)句;在條件為假時(shí),跳過(guò)語(yǔ)句statement1(或代碼塊blockl)
執(zhí)行else后面的statement2(或代碼塊block2),然后繼續(xù)執(zhí)行下面的語(yǔ)句。
2、多分支語(yǔ)句
Java語(yǔ)言提供了多分支語(yǔ)句swirch。switch語(yǔ)句根據(jù)表達(dá)式的值從多個(gè)分支中選擇一個(gè)來(lái)執(zhí)
行,它的一般格式為:
switch(expression){
casevalue1:statementl;
break;
casevalue2:statement2;
break;
■
1
casevalueN:statementN;
break;
[default:defaultstatement;]}
對(duì)switch語(yǔ)句說(shuō)明如下:
(1)表達(dá)式expression只能返回這幾種類型的值:int、byte、short和char。
(2)case子句中的值valuel必須是常量,而且所有case子句中的值應(yīng)是不同的。
(3)cefault子句是任選的。
(4)break語(yǔ)句用來(lái)在執(zhí)行完一個(gè)case分支后,使程序跳出switch語(yǔ)句的執(zhí)行。
(5)case分支中包含多條語(yǔ)句(即statement為一連串語(yǔ)句序列)時(shí),可以不用大括號(hào)。
(6)switch語(yǔ)句的功能可以用if-elseif結(jié)構(gòu)來(lái)實(shí)現(xiàn)。
【考點(diǎn)三】循環(huán)語(yǔ)句
-一個(gè)循環(huán)語(yǔ)句一般應(yīng)包含4部分內(nèi)容。
(1)初始化部分(initialization);
(2)循環(huán)體部分(body);
(3)迭代部分(iteration);
(4)判斷部分(termination);
1、while循環(huán)
while循環(huán)又稱“當(dāng)型”循環(huán),它的一般格式為:
[initialization]
while(termination)
(
body;
[iteration:]
)
說(shuō)明如下:
(1)首先初始化控制條件,這部分是任選的。(2)當(dāng)布爾表達(dá)式(termination)的值為true
時(shí),循環(huán)執(zhí)行大括號(hào)中的語(yǔ)句,其中迭代部分是任選的.
(3)while循環(huán)首先計(jì)算條件就不滿足,則大括號(hào)中的語(yǔ)句或代碼塊一次都不會(huì)被執(zhí)行。這
是“當(dāng)型,,循環(huán)的特點(diǎn)。
(4)while循環(huán)通常用于循環(huán)次數(shù)不確定的情況,但也可以用于循環(huán)次數(shù)確定的情況。
2、do-while循環(huán)
do-while循環(huán)又稱“直到型”循環(huán),它的一般格式為:
[initialization]
do{
body;
[iteration:]}while(termination);
說(shuō)明如下:
(1)do-while結(jié)構(gòu)首先執(zhí)行循環(huán)體,然后計(jì)算終止條件,若結(jié)果為true,則循環(huán)執(zhí)行大括
號(hào)中的語(yǔ)句或代碼塊,直到布爾表達(dá)式的結(jié)果為falseo
(2)與while結(jié)構(gòu)不同的是,do-while結(jié)構(gòu)的循環(huán)體到少被執(zhí)行一次,這是“直到型”執(zhí)行的
特點(diǎn)。
3、for循環(huán)
for循環(huán)的一般格式為:
for(initialization;termination;iteration)
(
body;
)
說(shuō)明如下:
(1)for循環(huán)執(zhí)行時(shí),首先執(zhí)行初始化操作,然后判斷終止條件是否滿足,如果滿足,則執(zhí)
行循環(huán)體中的語(yǔ)句,最后執(zhí)行迭代部分。完成一次循環(huán)后,重新判斷終止條件。
(2)可以在for循環(huán)的初始化部分聲明一個(gè)變更,它的作用域?yàn)檎麄€(gè)for循環(huán)。
(3)for循環(huán)通常用于循環(huán)次數(shù)確定的情況,但也可以根據(jù)循環(huán)結(jié)束條件完成循環(huán)次數(shù)不確
定的情況。
(4)在初始化部分和迭代部分可以使用逗號(hào)語(yǔ)句來(lái)進(jìn)行多個(gè)操作。逗號(hào)語(yǔ)句是用逗號(hào)分隔
的語(yǔ)句序列。
(5)初始化,終止以及迭代部分都可以為空語(yǔ)句(但分號(hào)不能省),三者均為空的時(shí)候,
相當(dāng)于一個(gè)無(wú)限循環(huán)。
【考點(diǎn)四】跳轉(zhuǎn)語(yǔ)句
1、break語(yǔ)句
break語(yǔ)句是最常用的用法是在switch語(yǔ)句中,通過(guò)break語(yǔ)句退出switch語(yǔ)句,使程序從
switch結(jié)構(gòu)后面的第一條語(yǔ)句開(kāi)始執(zhí)行。
在Java中,還可以用break語(yǔ)句退出循環(huán),并從緊跟該循環(huán)結(jié)構(gòu)的第一條語(yǔ)句處開(kāi)始執(zhí)行。
2、continue語(yǔ)句
break語(yǔ)句用來(lái)退出循環(huán),并從緊跟該循環(huán)語(yǔ)句的第一條語(yǔ)句處開(kāi)始執(zhí)行;而continue語(yǔ)句
則跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,回互循環(huán)體的開(kāi)始繼續(xù)下一輪的循環(huán)。當(dāng)然,在一一
輪循環(huán)開(kāi)始前,要先進(jìn)行終止條件的判斷,以決定是否繼續(xù)循環(huán),對(duì)于for語(yǔ)句,在進(jìn)行終
止條件的判斷前,還要先執(zhí)行迭代語(yǔ)句。
3、return語(yǔ)句
return語(yǔ)句從當(dāng)前方法中退出,返回到調(diào)用該方法的語(yǔ)句處,并從緊跟該語(yǔ)句的下一條語(yǔ)句
繼續(xù)程序的執(zhí)行。返回語(yǔ)句有兩種格式:
returnexpression;return;
return語(yǔ)句通常用在一個(gè)方法體的最后,否則會(huì)產(chǎn)生編譯錯(cuò)誤,除非用在if-else語(yǔ)句中。
【考點(diǎn)五】循環(huán)語(yǔ)句與分支語(yǔ)句的嵌套
一個(gè)循環(huán)體內(nèi)又可包含另一個(gè)完整的循環(huán)語(yǔ)句,構(gòu)成多重循環(huán)語(yǔ)句。
循環(huán)語(yǔ)句與分支語(yǔ)句可相互嵌套,以實(shí)現(xiàn)復(fù)雜算法。分支語(yǔ)句的任意一個(gè)分支中都可以嵌套
一個(gè)完整的循環(huán)語(yǔ)句,同樣循環(huán)體中也可以包含完整的分支語(yǔ)句。
【考點(diǎn)六】遞歸(recursion)
(recusion)是常用的種解決問(wèn)題的方法,即把問(wèn)題逐漸簡(jiǎn)單化。遞歸的基本思想是“自
己調(diào)用自己“,一個(gè)使用遞歸技術(shù)的方法將直接或間接地調(diào)用自身的方法。利用遞歸,可以
用簡(jiǎn)單的程序來(lái)解決某些復(fù)雜的計(jì)算問(wèn)題。
遞歸結(jié)構(gòu)的主要內(nèi)容包括兩個(gè)部分:
(1)定義遞歸頭。
(2)定義如何從同性質(zhì)的簡(jiǎn)化問(wèn)題求得當(dāng)前問(wèn)題。
執(zhí)行遞歸方法時(shí),首先逐級(jí)遞歸調(diào)用展開(kāi)。
遞歸結(jié)構(gòu)的優(yōu)點(diǎn)之一是程序非常簡(jiǎn)潔,但是遞歸調(diào)用會(huì)占作大量的系統(tǒng)堆棧,內(nèi)存耗用多,
在遞歸調(diào)用層次較多時(shí),運(yùn)算速度較之循環(huán)結(jié)構(gòu)慢慢多。
第5章類、數(shù)組和字符串操作
【考點(diǎn)一】概述
Java是面向?qū)ο笳Z(yǔ)言,面向?qū)ο蟮乃枷胧菍⒖陀^事物都作為實(shí)體,而對(duì)象通過(guò)實(shí)體抽象得到。
程序是通過(guò)定義一個(gè)類,對(duì)類進(jìn)行實(shí)例化(也稱為創(chuàng)建對(duì)象)來(lái)實(shí)現(xiàn)。
類是變量和方法的集合體。類可以嵌套定義。類是Java程序中基本的結(jié)構(gòu)單位。
數(shù)組是最簡(jiǎn)單的復(fù)合數(shù)據(jù)類型,是有序數(shù)據(jù)的集合。數(shù)組的元素可以是值(基本數(shù)據(jù)類型)、
對(duì)象或其他數(shù)組。一個(gè)數(shù)組中的所有值都必須是相同的數(shù)據(jù)類型。
文本字符串是一種參考數(shù)據(jù)類型,它一身是由java、lang、String定義的對(duì)象。
1、類定義
Java語(yǔ)言編寫(xiě)程序通過(guò)新的對(duì)象類型機(jī)制,就是允許自定義對(duì)象類型一類,它是程序的基
本要素,由成員變量和成員方法組成。實(shí)例化一個(gè)類,就能得到一個(gè)對(duì)象。類的成員變量可
以是基本類型數(shù)據(jù)、數(shù)組、或類的實(shí)例。成員方法只在類中定義,用來(lái)處理該類數(shù)據(jù)。類提
供外界訪問(wèn)其成員方法的權(quán)限,通常,類成員數(shù)據(jù)都是私有的,而方法是公有的,外界只可
能訪問(wèn)成員方法。
(1)類聲明
格式:[修飾符]class類名[extends父類名][implements類實(shí)現(xiàn)的接口列表]
其中用[]括起來(lái)的內(nèi)容為可選項(xiàng)。關(guān)鍵字class是定義的開(kāi)始,類名應(yīng)符合標(biāo)識(shí)符命名規(guī)
則,第一個(gè)字母大寫(xiě)并具有類功能特征。修飾符指明類的訪問(wèn)控制符和類型說(shuō)明符。關(guān)鍵字
wxtends指明該類是子類,它的父類名緊跟在后,子類與父類之間有繼承關(guān)系。關(guān)鍵字
implements指明該類實(shí)現(xiàn)的接口。后跟接口名列表。修飾符包括:
①public訪問(wèn)控制符指明該類為公共類,可被其他類訪問(wèn)或引用其成員變量和成員方法。
②默認(rèn)(也稱friendly)即沒(méi)有訪問(wèn)控制符,表示該類只能被同一個(gè)包的類訪問(wèn)和引用,也
不能用import語(yǔ)句引入。
③abstract抽象類,指明不能實(shí)例化的類。
④final是最終類,指明該類不能有子類。
(2)類體
格式:
class類名
(
成員變量聲明
成員方法聲明
)
成員變量和成員方法都可用public、protected、private和default來(lái)限定訪問(wèn)權(quán)。許多細(xì)節(jié)將
在后面討論。
(3)成員變量
成員變量聲明格式:
修飾符【public,protected,private,static,final,transient,volatile]
type變量名:其中type可以是java語(yǔ)句中任意數(shù)據(jù)類型。而修飾符的含義:
①public指明變量為公有。由于面向?qū)ο蠹夹g(shù)的封裝要求,應(yīng)盡量少用公共變量,而是通過(guò)
公共方法類間接訪問(wèn)類的成員變量,從而提高程序的穩(wěn)定性。
②protected指明變量為保護(hù)訪問(wèn)??杀煌粋€(gè)包中其中他類、不同包中該類的了類以及該類
自己訪問(wèn)和引用。保證所有子類都可訪問(wèn)父類,不管這些子類被封裝在哪里。
③private指明變量為私有訪問(wèn)。只能被該類自一訪問(wèn)或調(diào)用,是對(duì)成員變量的最高級(jí)保護(hù)。
④static指明變量為靜態(tài)變量,否則為實(shí)例變量。靜態(tài)變量不需要類的實(shí)例化就可被類直接
調(diào)用。
⑤final指明變量為常量。注意用大寫(xiě)字母。
?transient指明變量為暫時(shí)性變量,用實(shí)現(xiàn)不同對(duì)象存檔功能。
⑦volatile指明多個(gè)線程共享的變量,保證各線程對(duì)該變量訪問(wèn)的一致性。
(4)成員方法定義和調(diào)用
所謂成員方法,是指作為類的成員的方法。方法的定義由方法聲明和方法體組成。方法定義
的形式如下:
returnTypemethodName(paramlist)[throwsexcetions]
它表明了在一個(gè)方法調(diào)用前要知道的一些信息:
①方法的名稱。
②參數(shù)的類型和名稱。
③方法返回值的類型。
④方法的拋出的異常類型。
方法聲明格式:
修飾符[public,protected,private,static,final,abstract,native,synchronized]
returnTypemethodName([paramlist])[throwsexceptions]
其中修飾符public、protected>private>static>final與成員變量聲明意義相同,都是定義方
法訪問(wèn)權(quán)限。abstract指明方法是否可以重寫(xiě),native指明代碼是由各種語(yǔ)言集成,
synchronized指明多線程可并發(fā)共享訪問(wèn)。
方法體是對(duì)方法的實(shí)現(xiàn),包括局部變量聲明、java合法指令。
注意:Java中的方法的參數(shù)傳遞是傳值調(diào)用,而不是地址調(diào)用。方法不能改變參數(shù)值,但中
以改變變量值,兩個(gè)對(duì)象之間的參數(shù)字段,不能相互交換。
(5)方法重載
方法的重載是指多個(gè)方法可以享用相同的名字,但參數(shù)的數(shù)量或類型必須不完全相同,鄧方
法有所不同,它實(shí)現(xiàn)了Java編譯時(shí)的多態(tài)(即靜態(tài)多態(tài)性)性。
(6)構(gòu)造方法
構(gòu)造方法是為對(duì)象初始化操作編寫(xiě)的方法,用它來(lái)定義對(duì)象的初始狀態(tài)。在Java語(yǔ)言中的
每個(gè)類都有構(gòu)造方法,它也是由方法名、參數(shù)和方法體組成的。構(gòu)造方法名必須與類名相同,
它沒(méi)有返回值,用戶不能直接調(diào)用它,只能通過(guò)new自動(dòng)調(diào)用。
構(gòu)造方法有下列特點(diǎn):
①因?yàn)闃?gòu)造方法名與類名必須相同,所以方法首字母小寫(xiě)規(guī)則對(duì)它不適用。
②構(gòu)造方法是給對(duì)象賦初值,沒(méi)有返回值,但不用void來(lái)聲明。
③構(gòu)造方法不能被程序調(diào)用。
④構(gòu)造方法可由編程人員在類中定義,默認(rèn)時(shí)由Java語(yǔ)言自動(dòng)生成。
⑤構(gòu)造方法可以重載實(shí)現(xiàn)不同的初始化方法,調(diào)用時(shí)按參數(shù)決定調(diào)用哪個(gè)方法。
2、對(duì)象、接口與色
對(duì)類實(shí)例化,可以生成多個(gè)對(duì)象,通過(guò)這些對(duì)象之間的消息傳遞進(jìn)行交互,可完成很復(fù)雜的
功能。一個(gè)對(duì)象的生命周期分為3個(gè)階段:生成、使用和清除。
(1)對(duì)象的生成
對(duì)象是一組相關(guān)變量和相關(guān)方法的封裝體,是類的一個(gè)實(shí)例。對(duì)象的特征是對(duì)象的行為、狀
態(tài)和身份。對(duì)象生成包括聲明、實(shí)例化和初始化三方面內(nèi)容。一般格式是
typeobjectName=newtype(【參數(shù)】);
其中:typeobjectName聲明是定義對(duì)象的類型,它包括類和接口的復(fù)合類型。new關(guān)鍵字是
實(shí)例化一個(gè)對(duì)象,給對(duì)象分配內(nèi)存,它調(diào)用對(duì)象的構(gòu)造方法,返回該對(duì)象的引用(存儲(chǔ)對(duì)象
所在堆地址和有關(guān)信息,并非內(nèi)存直接地址)。new可以實(shí)例化類的多個(gè)不同的對(duì)象,分配
不同的內(nèi)存。
(2)對(duì)象的使用
對(duì)象的使用原則是先定義后使用。
①通過(guò)“?”運(yùn)算符實(shí)現(xiàn)對(duì)成員變量的訪問(wèn)和方法調(diào)用。其格式為:
對(duì)象名?調(diào)用的方法名或變量名
②將一個(gè)對(duì)象聲明為類的成員時(shí)要注意在使用前必須對(duì)該對(duì)象分配內(nèi)存,也可以用private
修飾符保證數(shù)據(jù)安全。
③在方法中使用對(duì)象作為參數(shù)時(shí),采用引用調(diào)用。
(3)對(duì)象的清除
對(duì)象的清除指揮釋放對(duì)象所占用的內(nèi)存。歸納起來(lái)對(duì)象清除的途徑為:
①依靠Java的垃圾回收機(jī)制回收內(nèi)存。
②調(diào)用Systtem.gc(),請(qǐng)求垃圾回收。
③Java系統(tǒng)開(kāi)始運(yùn)行時(shí),自動(dòng)調(diào)用java.lang.Object.finalize()釋放內(nèi)存。
④在程序中調(diào)用重寫(xiě)的finalize()釋放系統(tǒng)資源,其格式為:
protectedvoidfinalize()throwsthrowable{i
super.finalize();
)
(4)接口
接口是一種只含有抽象方法或常量的一種特殊的抽象類。在Java語(yǔ)言中,用abstract修飾符
定義的類稱為抽象類,在其中的方法稱為抽象方法。abstract類的格式為:
abstractclassabstractClass{
I
)
接口是不包含成員變量和方法實(shí)現(xiàn)的抽象類,它只包含常量和方法的定義。接口的主要功能
是:
①不管類的層次,可實(shí)現(xiàn)互不相關(guān)的類具有相同的行為。
②通過(guò)接口說(shuō)明多個(gè)類所需實(shí)現(xiàn)的方法。
③通過(guò)接口可以了解對(duì)象的交互界面,無(wú)需了解對(duì)象所對(duì)應(yīng)的類。
接口定義由接口聲明和接口體組成。
(5)包
為解決同名類會(huì)發(fā)生沖突矛盾,Java采用包來(lái)管理類名空間。
定義一個(gè)包要用package關(guān)鍵字。用package語(yǔ)句說(shuō)明一個(gè)包時(shí),該包的層次結(jié)構(gòu)必須與文
件目錄的層次相同。否則,在編譯時(shí)可能出現(xiàn)查找不到的問(wèn)題。
使用一,個(gè)包中的類時(shí),首先要用關(guān)鍵字import導(dǎo)入這些類所在的的包。Java語(yǔ)言的javaJang
包是編譯器自動(dòng)導(dǎo)入的。因此,編程時(shí)使用該包中的類,可省支import導(dǎo)入。但使用其他
包中的類,必須用import導(dǎo)入。
【考點(diǎn)二】類成員修飾符、繼承、內(nèi)部類、類庫(kù)
(1)類及類成員修飾符
常用的類成員修飾符如下:
修飾符可修飾對(duì)象含義
publie類
接口
成員變量,成員方法可跨包訪問(wèn)。
private成員變量,成員方法類內(nèi)可訪問(wèn)
protected成員變量,成員方法包內(nèi)可訪問(wèn)。
static類
類變量
類方法靜態(tài)內(nèi)部類不能有對(duì)外調(diào)用,成員獨(dú)立于該類的任何實(shí)例對(duì)
象。類變量是全局變量。
類方法是全局方法。在其中不能使用this,super。不能創(chuàng)建
內(nèi)部類的實(shí)例。
synchronized成員方法用于保持線程同步。
final類
成員變量
成員方法沒(méi)有子類的類。
不能改變值的變量的變量不能被覆蓋的方法。
不能被覆蓋的方法。
不能改變值字段。
abstract類
接口
成員方法類中含沒(méi)有實(shí)現(xiàn)的方法,該類不能實(shí)例化。
所有接口都是抽象的,是接口缺省修飾符。
沒(méi)有實(shí)現(xiàn)的方法。
修飾符可分為訪問(wèn)限定符和非訪問(wèn)限定兩類。
(2)繼承
繼承性是面向?qū)ο蠓椒ǖ囊粋€(gè)重要基本特征,它使代碼可重用,可降低程序復(fù)雜性。Java
語(yǔ)言中,所有的類都是通過(guò)直接或間接地繼承java,lang,Objecter而得到的。Java不支持
多重繼承。通過(guò)在類聲明中加入extends子句來(lái)創(chuàng)建子類,其格式為:
classSubClassextendsSuperClass{
重寫(xiě)方法必須遵循兩個(gè)原則是編譯器為了實(shí)現(xiàn)面向?qū)ο蠓椒ǖ亩鄳B(tài)性,保證程序健壯,避免
程序招待時(shí)出現(xiàn)訪問(wèn)權(quán)限的沖突,并不會(huì)漏了異常的捕獲。super的使用有3種情況:
①用于訪問(wèn)被隱藏的父類成員變量,其格式為:
super,變量名;
②用于調(diào)用被重寫(xiě)的父類方法,其格式為:
super,方法名;
③用于調(diào)用父類的構(gòu)造方法,其格式為;
super([參數(shù)列表])
(3)內(nèi)部類
在一個(gè)類的內(nèi)部嵌套定義的類稱為內(nèi)部類(InnerClass)?特點(diǎn)是:①內(nèi)部類的類名只能在
定義它的類或程序段中或在表達(dá)式內(nèi)部匿名使用,外部使用它時(shí)必須給出類的全名。
②內(nèi)部類可以使用它所在類的靜態(tài)成員變量和實(shí)例成員變量,也可使用它所在類的方法中的
局部變量。
③內(nèi)部類可用abstract修飾定義為抽象類,也可用private或protected定義。
④內(nèi)部類可作為其他類的成員,而且可訪問(wèn)它所在類的成員。
⑤除static內(nèi)部類外,不能在類內(nèi)聲明static成員。
(4)類庫(kù)
類庫(kù)以包的形式組織,是包的集合。早在J2SE的131版,類庫(kù)已有76個(gè)包,目前已發(fā)展
到J2SE1.4.2版,類庫(kù)的包已過(guò)百。
java.lang包。該包中所有類都在運(yùn)行時(shí),由java解釋器自動(dòng)引入,程序不用import語(yǔ)句都
可使用其中任何一個(gè)類。該包有接口、類、異常等組成。它是Java語(yǔ)言的最底層的類。它
包括的最主要的類有:
①Object類是Java所有類的根類,其他類都由它擴(kuò)展而來(lái)。它定義的方法包括:
?preorectedObjetclone()throwsCloneNotSupporteedException,該方法生成當(dāng)前對(duì)象的拷貝,
并返回該拷貝對(duì)象。凡調(diào)用該方法的類都應(yīng)該的類都應(yīng)該實(shí)現(xiàn)cloneable接口,否則運(yùn)行時(shí)
會(huì)拋出異常。
?publicfinalClassgetClass(),該方法返回一個(gè)當(dāng)前對(duì)象運(yùn)行時(shí)的Class類對(duì)象。
?publicinthashCode().該方法返回一個(gè)hash值。
?publicBooleanequals(Objectobj),該方法比較當(dāng)前對(duì)象與形參對(duì)象相同否,相同返回true,
否則返回falseo
?publicStringtoString(),該方法返回一個(gè)當(dāng)前對(duì)象住處的字符串。
?publicfinalvoidnotify(),該方法喚醒一個(gè)等待線程。
?publicfinalvoidnotifyAl1(),該方法喚醒所有等待線程。
?publicfinalvoidwait(longtimeout)throwsInterruptedException,該方法讓當(dāng)前線程進(jìn)入等待
行列。
?publicfinalvoidwait(longtimeout,intnanos)throwsInterruptedException,該方一法讓線程等待
時(shí)間是兩個(gè)形參之和。
?publicfinalvoidwait()throwsInterruptedException.該方法等同wait(0)?
?publicvoidfinalize()throwsThrowable,該方法把對(duì)象從內(nèi)存中清除。
②Class類是用于類操作規(guī)程的類,Class對(duì)象由Java編譯器自動(dòng)生成,隱藏在.class文件中,
它在運(yùn)行時(shí)為用戶提供信息。另多此一舉這提供運(yùn)行時(shí)動(dòng)態(tài)裝入環(huán)境的操作類ClassLoader,
這兩類常用方法包括:
?staticClassForname(StringclassName),該方法返回指定類的對(duì)象。
?StringgetName(),該方法獲得Class對(duì)象的類名。
?ClassLoadergerClassLoader(),該方法返回ClassLoaer對(duì)象。
?boolislnterfae(),該方法返回判斷是否接口的布爾值。
?ClassgetSuperclass(),該方法返回當(dāng)前對(duì)象父類的Class對(duì)象。
?StringtoString(),該方法返回當(dāng)前類或接口的名字。
?abstractClassloadClass(Stringname,Booleanresolve),該方法把類名分解成對(duì)象,分解成
功返回Class對(duì)象,否則返回nullo
?finalClassdefineClass(Stringname,bytedata[],intlength),該方法把一個(gè)字節(jié)數(shù)組轉(zhuǎn)換
成一個(gè)類的對(duì)象,對(duì)象以data數(shù)組的offset為起點(diǎn),length為字節(jié)長(zhǎng)度構(gòu)成。
?finalvoidresolveClass(Classc),該方法分解一個(gè)類。
?finalClassfindSystemClass(Stringname),該方法用來(lái)查找和裝入系統(tǒng)類。
③System類是一個(gè)final類,即不能被實(shí)例化的類,它主要提供標(biāo)準(zhǔn)輸入、輸出和系統(tǒng)環(huán)境
信息。它有3個(gè)很有用的成員變量:in、out和err,分別表示標(biāo)準(zhǔn)輸入流對(duì)象、標(biāo)準(zhǔn)輸出流
對(duì)象和出錯(cuò)流對(duì)象。主要方法有:
?staticlongcurrentTimeMillis(),該方法返回系統(tǒng)時(shí)間,以毫秒為單位。
?staticStringgerProperties(),該方法獲得系統(tǒng)環(huán)境信息。
?staticStringgerProperties(Stringkey,Stringdef)該方法獲得系統(tǒng)變量值。
?staticvoidsetPtoperties(PropertiesP),該方法設(shè)置系統(tǒng)特征。
?staticvoidgc(),該方法運(yùn)行垃圾收集器。
?staticvoidloadLibrary(Stringlibname),該方法裝入一個(gè)動(dòng)態(tài)鏈接庫(kù)
?Thread類是提供線程操作和管理的類。
其次,看看實(shí)作工具Javauitl包。它包括許多常用功能的類的和接口。主要包括:
①GrggorianCalendar日歷類提供日期和時(shí)間的表示,它以格里歷(即陽(yáng)歷)來(lái)計(jì)算。主要方
法有:
?intget(intfield),獲得一個(gè)特定字段的值,參數(shù)field是其父類Calendar定義的許多參數(shù)之
一(如Calendar.YEAR、CaIendar.MONTH>Calendar.DATE等)。
?voidset(intyeat,intmonth,intdate),設(shè)置日期字段值。
?voidset(intyear,intmouth,intdate,inthour,intminute,intsecond),設(shè)置Fl期和時(shí)間字
段值。
?voidadd(intfideld,intamount),在字段上加指定值。
②Vector類實(shí)現(xiàn)了動(dòng)態(tài)分配對(duì)象列表,適用于可變對(duì)象數(shù)組的類,它的內(nèi)存容量可按照需要
自動(dòng)增加。主要方法有:
?ensureCapacity(),保證指定元素的最小容量。
?trimToSze。,將當(dāng)前元素的容量高速到最小。,2(1(1£1?1相1曲),可.加新元素。
?get(),可獲得Vector中的元素。
?set(),可修改Vector中的元素。
?temove(),可刪除Vector中的元素。
?elemnetAt(),可直接訪問(wèn)元素。
?indexOf(),可確定元素的位置。?size(),返回Vector的容量大小。
③Stack類是實(shí)現(xiàn)先進(jìn)后出的對(duì)象棧,它是Vector的子類,它不能直接被訪問(wèn),中能從棧頂
壓入或彈出。它的主要方法有:
?empty(),判斷棧是否為空是空返回true。
?peek(),返回棧頂對(duì)象。
?pop(),彈出棧頂?shù)囊粋€(gè)元素。
?push(Object),從棧頂壓入一~個(gè)元素。
?search(Object),查找棧內(nèi)一個(gè)元素。
④Dictionary類是抽象類,不能實(shí)例化去創(chuàng)建?個(gè)對(duì)象,它是關(guān)鍵字和值的數(shù)據(jù)對(duì)存儲(chǔ)的集
合。它的抽象方法有:
?elements。,返回一個(gè)枚舉元素。
?ger(Object),返回關(guān)鍵字所對(duì)應(yīng)的值。
?isEmptyO,判斷字典是否為空,如為空返回true。
?keys(),返回關(guān)鍵字的一個(gè)枚舉元素。
?put(Object,object),存入一對(duì)關(guān)鍵字和值到字典中。
?remove(Object),按照關(guān)鍵字從字典中刪去一個(gè)元素。
?size(),返回存儲(chǔ)元素的數(shù)量。
4、內(nèi)部類的應(yīng)用實(shí)例
本程序是銀行出納的一種業(yè)務(wù),其功能是對(duì)10000元人民幣按照2%的年利率存入銀行,計(jì)
算每年的存款數(shù),每10秒顯示一行,用鍵盤(pán)對(duì)話框退出。內(nèi)部類用于計(jì)算遞增的存款數(shù)額
并顯示。內(nèi)部類所實(shí)現(xiàn)的Timer監(jiān)聽(tīng)器接口,完成了定時(shí)器的事件處理。
【考點(diǎn)三】一維數(shù)組
數(shù)組是一種復(fù)合數(shù)據(jù)類型,在Java中,數(shù)組是作為對(duì)象來(lái)處理的。數(shù)組有限元素的有序集
合,數(shù)組中的元素具有相同的數(shù)據(jù)類型,并可用統(tǒng)一的數(shù)組名和下標(biāo)來(lái)惟一確定其元素,元
素是數(shù)組中不可分的最小單位。
1、定義數(shù)組、創(chuàng)建數(shù)組
在Java中定義-維數(shù)線格式為:typeattayName[];或type[]arrayName:
創(chuàng)建--個(gè)數(shù)組的格式為:arrayName=newtype[arraySize]
在Java中定義并創(chuàng)建一個(gè)數(shù)組對(duì)象:type[]arrayName=newtype[arraySize];
2、初始化數(shù)組
所謂數(shù)組初始化即對(duì)已經(jīng)定義好的數(shù)組元素賦值。
(1)靜態(tài)初始化
靜態(tài)初始化適用數(shù)組元素的個(gè)數(shù)較少,而且是初始元素可以枚舉的情況。
(2)動(dòng)態(tài)初始化
用new動(dòng)態(tài)初始化時(shí),數(shù)組元素的默認(rèn)值如下:
序號(hào)元素類型默認(rèn)初紿值
1booleanFalse
2char'uOOOO'
3整數(shù)0
4浮點(diǎn)數(shù)0.0
5對(duì)象null
對(duì)復(fù)雜類型的數(shù)組初始化,需要兩步完成。首先,為每個(gè)數(shù)組元素分配引用空間。其次,為
每個(gè)數(shù)組元素分配空間并賦初值。
【考點(diǎn)三】多維數(shù)組
(1)二維數(shù)組定義
二維數(shù)組定義的格式為:typeattayName[][];或type[][]arrayName;
(2)初始化二維數(shù)組
①靜態(tài)初化:即在定義數(shù)組的同時(shí)分配內(nèi)存空間。
②動(dòng)態(tài)初始化:可直接對(duì)每一維分配空間或從最高維開(kāi)始對(duì)每維分配空間。
【考點(diǎn)四】字符串操作
1、字符串的表示
(1)字符串的表示
字符串常量用""括起來(lái)的字符序列。字符串常量可以用來(lái)直接初始化一個(gè)String對(duì)象。
(2)用String類表示字符串
在Java中,String類提供構(gòu)造方法可生成一個(gè)空串,也可通過(guò)字符數(shù)組或字節(jié)數(shù)組來(lái)生成一
個(gè)字符串對(duì)象,其中,char[]、byte[]用來(lái)生成字符串的數(shù)組,startindex、offset指定
字符串在數(shù)組中的起始下標(biāo),numClass、length表示字符個(gè)數(shù)。
(3)用StringBuffer表示字符串
StringBuffer類提供長(zhǎng)度可變字符串對(duì)象的表示,它提供下列構(gòu)造方法對(duì)可變字符串對(duì)象初
始化:
StringBuffer();
StringBuffer(intlength);StringBuffer(Stringstr)
2、字符串的訪問(wèn)
Siring類包括的方法有:Length。、charAt。、indexOf。、getChars。、getBytes。、toCharArray。
等.
(1)提取字符串長(zhǎng)度
Stringgreeting="Helle";
intn=greeting.length();//返回字符串的字符個(gè)數(shù)n=5
(2)提取字符串中指定字符
charlast=greeting.charAt(4):〃從字符串0數(shù)到4的字符是'0'。
(3)提取字符串中多個(gè)字符
publicvoidgetCharsw(intsrcbegin.intend,charbufE],intdstbegin);
其中,srcbegin指定要提取的第1個(gè)字符在該字答串的位置,end指定要提取的最后字符在
該字符串的位置,buf[]是目的字符呂存儲(chǔ)的數(shù)組,dstbegin指定提取字符插入目的字符
串的位置。
StringBuffer類包括方法有:lengty。、charAt。、getChars。、capacity。。
(4)查詢字符
在字符串中查詢指定字符或子串時(shí),可用indexOf()和lastIndexOf()方法。如查詢成功,返回
所查字符的位置。如不成功,返回-1。
3、字符串的修改
(1)對(duì)string的修改
因?yàn)樗枪潭ㄩL(zhǎng)度字符串,修改必須通過(guò)實(shí)例。String提供concat。、teplace。、substring。、
toLowerCase()AtoUpperCase。等方法。
PublicStringconcat(Stringstr),將當(dāng)前字符串對(duì)象與指定str字符串相連。
publicStringreplace(charoldChar,charnewChar),用新字符替換老字符。
publicStringsubstring(intbeginindex),按指定的起始位置獲得子符串。
publicStringsubstring(intbeginlndex,intendindex),按指定范圍去獲得字符串中的子字符串。
publicStringtoLowerCase(),將字符串中所有字符變?yōu)樾?xiě)。publicStringtoUpperCase(),將
字符串中所有字符變?yōu)榇髮?xiě)。
①兩個(gè)字符串的連接。
Stringstrl='*abcn;
Stringstr2=strl.concat("cden);//"abccde"
②替換掉一個(gè)字符串中的所有與指定字符相匹配的字符。
str.replace(",,#*);〃將字符串str中的所有的空格替代為#。
③Java允許將字符串用+號(hào)連接起來(lái)。
Stringexpletive="expltive";
StringPG13="deleted”;
Stringmessage=expletive+PG13;
④提取子字符串。
Stringgreeting="Hello"
Strings=ngreeting.substring(O,3)";
取字符串greeting的第0個(gè)到第3個(gè)字符組成新串:"Hell”。
(2)對(duì)StringBuffer的修改
因?yàn)镾tringBuffer類是表示可變長(zhǎng)度字符串,它可以在字符中插入字符和在字符串尾加字符。
緩存不必管理,Java解釋器自動(dòng)分配。它的方法包括:append。、insert。、SetCharArQ。
4、字符串的比較
測(cè)試字符串是否相等,可用equals。方法。
5、其他操作
(1)鍵盤(pán)讀取字符串的對(duì)話框
javax.swing.JOptionPane用于從控制臺(tái)鍵盤(pán)讀科字符串。
(2)將字符串對(duì)象轉(zhuǎn)換為基本數(shù)據(jù)類型
intage=Integer.parselnt(input);//進(jìn)行從字符串到整數(shù)的類型轉(zhuǎn)換。
6、程序?qū)嵗?/p>
本程序的功能是進(jìn)行鍵盤(pán)對(duì)話框測(cè)試。意圖在于學(xué)會(huì)JOptionPane類的用法。同時(shí)對(duì)于申輸
入、串定義、串類型轉(zhuǎn)換有所了解。
第6章異常處理
【考點(diǎn)一】概述
異常是在程序編譯或運(yùn)行中所發(fā)生的可預(yù)料或不可預(yù)料的異常事件,它會(huì)引起程序的中斷,
影響程序正常運(yùn)行。
在Java語(yǔ)言中,異常機(jī)制是:一旦出現(xiàn)異常,可以由運(yùn)行的方法或虛擬機(jī)生成一個(gè)異常對(duì)
象,它飲食異常事件的類型以及發(fā)生異常時(shí)程序的狀態(tài)等信息。異常對(duì)象從產(chǎn)生和被傳遞提
交始Java運(yùn)行系統(tǒng)的過(guò)程稱為拋出(throw)異常。在Java運(yùn)行時(shí),如獲得一個(gè)異常對(duì)象,
它會(huì)自動(dòng)尋找處理該異常的代碼,它從生成異常對(duì)象的代碼構(gòu)件開(kāi)始,沿著方法調(diào)用棧,按
導(dǎo)回溯尋找,直至找到處理該類異常方法為止,再由Java運(yùn)行系統(tǒng)將該異常對(duì)象交給該方
法去處理,這一個(gè)過(guò)程稱為捕獲(catch)異常。Java語(yǔ)言能按機(jī)制來(lái)接收并處理異常,是
要求所指異常對(duì)象必須是已定義好的異常類的實(shí)例。Java語(yǔ)言中的類庫(kù),已定義有許多異常
類可利用。異常對(duì)象用new來(lái)創(chuàng)建,一旦創(chuàng)建合,就停止當(dāng)前執(zhí)行路徑,再?gòu)漠?dāng)前環(huán)境中
釋放異常對(duì)象的地址,此時(shí)異常機(jī)制就接管?切,把程序轉(zhuǎn)向異常處理器,去解決程序是否
能繼續(xù)進(jìn)行還是報(bào)錯(cuò)。
Java語(yǔ)言的類庫(kù)中提供一個(gè)別Throwable類,所有的異常對(duì)象都必須是它的實(shí)例。Throwable
類中的方法對(duì)拋出異常進(jìn)行描述。異常在Java程序中是有層次的。
Throwable類是直接Object類繼承來(lái)的,是所有異常類的根(父類),它的定義如下:
publicclassThrowableexceptionObjectimplementSerializableIsWpublicThrowable()和
publicThrowable(Stringmessage)兩個(gè)構(gòu)造函數(shù),其中的字符串參數(shù)可利用getMessage()方
法去獲得參數(shù)內(nèi)容。
Throwable類分為Error和Exceptiong兩子類,Error類包括動(dòng)態(tài)連接失敗、硬件設(shè)備和虛擬
機(jī)出錯(cuò)等,通常的Java應(yīng)用程序不會(huì)捕獲和拋出這類異常,而是捕獲和拋出Exception這類
異常,它包括運(yùn)行時(shí)出現(xiàn)的異常,并對(duì)這類異常作出處理。
Throwable類有publicThrowable()和publicThrowable(Stringmessage)兩種構(gòu)造函數(shù),包
含getMessage。、toString。、printstackTrace()>fillStackTrace()方法,其中g(shù)etMessage()方
法用來(lái)返回帶參數(shù)構(gòu)造函數(shù)創(chuàng)建異常時(shí)的參數(shù)內(nèi)容,對(duì)無(wú)參數(shù)構(gòu)造函數(shù)而言,用它返回的是
空值;toString。用來(lái)返回異常的類名和getMessage()能得到的內(nèi)容,兩面三刀者用冒號(hào)分
隔,如getMssage。得的是空值,它只返回異常類名:printStrace()方法用來(lái)在標(biāo)準(zhǔn)輸出設(shè)備
上輸出堆棧使用的跟蹤;fiUStrackTrace()方法用在重新拋出異常時(shí)對(duì)堆棧的跟蹤。
【考點(diǎn)二】異常類型
按異常處理不同可分為運(yùn)行異常、捕獲異常、聲明異常和拋出異常兒種。
1、捕獲異常
當(dāng)異常已被定義時(shí),必須通過(guò)try-catch-finally語(yǔ)句處理它,其語(yǔ)法如下:
try(
!〃可能出現(xiàn)異常的程序段
}catch(ExceptionName1e){
;〃異常處理程序段1}catch(ExceptionName2e){
!〃異常處理程序段2}
I
■
}finally{
i〃最后異常處理程序段
)
捕獲異常的第1步是try{…}語(yǔ)句選定異常的范圍,由招待它的程序代碼段決定可能生成異
常對(duì)象并拋出;第2步由它的catch子句(一個(gè)或多個(gè))去處理它所拋出的異常事件,catch
子句要求一個(gè)形式參數(shù),指明所捕獲的異常類型,該類型必須是Throwable的子類,運(yùn)行時(shí)
Java解釋器通過(guò)該參數(shù)值將被拋出的異常對(duì)象傳遞給相應(yīng)的catch程序段,由該程序段處理,
它可用Throwable的getMessage()方法獲得異常事件信息,還可利用Throwable的
printStackTrace。方法跟蹤異常事件發(fā)生后招待堆棧的內(nèi)容;第3步是通過(guò)finally子句完成,
釋放資源,作為異常處理的統(tǒng)一出口。
2、聲明異常
Java語(yǔ)言中,有時(shí)?個(gè)方法生成一個(gè)異常,但該方法并不能確定如何處理此異常,如找不到
文件之類的展品常,必須將異常傳遞給調(diào)用方法,由調(diào)用它的方法來(lái)處理,這種時(shí)候方法用
聲明異常拋出,讓展品常對(duì)象可從調(diào)用棧向后傳遞,直至有相應(yīng)的方法捕獲它為止。聲明異
常拋出用Ithrows子句來(lái)完成聲明,throws子句包含在方法的聲明之中,語(yǔ)法如下:
throwsexceptionList〃異常列表是用逗號(hào)分隔的多個(gè)異常
3、拋出異常
在捕獲一個(gè)異常之前,必須先有異常拋出,才生成一個(gè)異常對(duì)象,這就用報(bào)出異常來(lái)實(shí)現(xiàn)。
拋出異常的程序代碼可以是Java應(yīng)用程序,或者是JDK中的某個(gè)類,還可能性是JVN。拋
出異常、生成異常對(duì)象都通過(guò)throw語(yǔ)句實(shí)現(xiàn),如:
lOExceptione=newlOException;
throwe:
當(dāng)然,能拋出的異常必須是Thtowable類或其子類的實(shí)例。利用throw語(yǔ)句不可以自定義異
常類拋出。
【考點(diǎn)三】處理異常
Rtry和catch語(yǔ)句
在捕獲異常時(shí)要用try-catch語(yǔ)句,該語(yǔ)句執(zhí)行時(shí),解釋器把可能產(chǎn)生異常的代碼段形成一
個(gè)“警戒區(qū)”,該“警戒區(qū)”由try引導(dǎo)?!熬鋮^(qū)”后面是catch從句,一個(gè)“警戒區(qū)”后面可接多
個(gè)catch從句。catch的程序段由catch引導(dǎo)。try“警戒區(qū)”代碼包括一些簡(jiǎn)單語(yǔ)句或方法調(diào)用,
在它遇到異常情況時(shí),停止執(zhí)行而轉(zhuǎn)跳到相應(yīng)處理異常的程序,這就由catch來(lái)控制。catch
子句都帶一個(gè)參數(shù),該參數(shù)是某個(gè)異常的類及其變量名(該異常對(duì)象的指針),catch用該
以數(shù)去與拋出異常對(duì)象的類進(jìn)行匹配,匹配上后就去執(zhí)行該catch后的程序段,即處理該異
常;如匹配不上就跳到下個(gè)catch,直至找到為止。
注意:try內(nèi)部不同的方法調(diào)用有可能產(chǎn)生相同的異常,但中需一個(gè)catch從句。
與catch匹配原則:
①不要用一個(gè)子類去捕獲父類的異常,盡可能用一個(gè)父類去捕獲其所有子類的異常。
②catch從句的順序排列要注意,應(yīng)該將最特殊的排在最前面,依次逐步一般化。
2、finally語(yǔ)句
捕獲異常的統(tǒng)一出口通過(guò)finally從句,因此對(duì)catch而言,無(wú)論由哪個(gè)捕獲異常,最后一定
去執(zhí)行finally從句,保證控制流在轉(zhuǎn)到其他路徑以前,程序的狀態(tài)能被統(tǒng)一管理。另外,
在系統(tǒng)執(zhí)行時(shí),遇到異常,就自動(dòng)跳轉(zhuǎn),出現(xiàn)異常語(yǔ)句后面的程序就不被執(zhí)行。實(shí)際上,經(jīng)
常還需要做一些與系統(tǒng)相關(guān)的工作,如釋放相關(guān)的工作,如釋放資源、關(guān)閉文件、關(guān)閉數(shù)據(jù)
庫(kù)等,這就可利用finally從句來(lái)完成。
3、異常處理的原則
Java語(yǔ)言的異常處理機(jī)制是要掌握幾條原則:
①把應(yīng)用程序的異常事件分類,利用異常的層次來(lái)動(dòng)態(tài)控制。在捕獲或聲明異常時(shí)?,應(yīng)注意
選擇適當(dāng)?shù)漠惓n愡x擇適當(dāng)?shù)牡胤教幚?,是在方法?nèi)處理還是用throws子句傳遞給調(diào)用棧
的上層。
②把異常處理的代碼與正常代碼分開(kāi),簡(jiǎn)化程序并增加可讀性。如對(duì)異常不知道在何時(shí)何地
了生,也不知該如何處理,可交給虛擬機(jī)去處理。
③利用finally語(yǔ)句作為異常處理的統(tǒng)一接口。
④能用簡(jiǎn)單測(cè)試不要用異??刂疲瑢?duì)異常不要過(guò)分細(xì)化,也不要壓制,不要介意對(duì)異常的傳
遞。
⑤自定義的異常類,都是Throwable及其子集,除了在運(yùn)行時(shí)產(chǎn)生或不易預(yù)測(cè)外,都定義為
非運(yùn)行時(shí)的異常。
第7章輸入輸出及文件操作
【考點(diǎn)一】概述
Java的輸入輸出流包括字節(jié)流、字符流、文件流、對(duì)象流以及多線程之間通信的管道流。
1、計(jì)算機(jī)數(shù)據(jù)的I/O方向
(1)流的概念
在計(jì)算機(jī)中,1984年由C語(yǔ)言第一次引入“流”的概念?!傲?’可以看做是一個(gè)流動(dòng)的數(shù)據(jù)緩
沖區(qū)。數(shù)據(jù)從數(shù)據(jù)源流向數(shù)據(jù)目的地。流的傳送是串行的。最常見(jiàn)的數(shù)據(jù)源是鍵盤(pán),最常見(jiàn)
的數(shù)據(jù)目的地是屏幕。從鍵盤(pán)鍵入文本,文本字符通過(guò)內(nèi)存流向屏幕,最終在屏幕上顯示出
來(lái)。
(2)I/O流的方向
輸入輸出在計(jì)算機(jī)系統(tǒng)中起到了采集數(shù)據(jù)和提供數(shù)據(jù)處理結(jié)果的雙重作用,它是以中央處理
器(含控制器和內(nèi)存)為此,以網(wǎng)絡(luò)及外部設(shè)備為彼的雙向數(shù)據(jù)傳輸機(jī)制。常用的外部設(shè)備
如鍵盤(pán)、顯示器、硬盤(pán)、掃描儀、打印機(jī)、網(wǎng)絡(luò)等等。凡是從外部設(shè)備流向中央處理器的數(shù)
據(jù)流,稱
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 2197-2022水文自動(dòng)測(cè)報(bào)系統(tǒng)數(shù)據(jù)傳輸規(guī)約
- DB31/T 932-2015粉煤灰在混凝土中應(yīng)用技術(shù)規(guī)程
- DB31/T 705-2013普通級(jí)實(shí)驗(yàn)用羊的病原監(jiān)測(cè)
- DB31/T 680.10-2022城市公共用水定額及其計(jì)算方法第10部分:城市軌道交通
- DB31/T 587-2012保護(hù)地黃瓜病害測(cè)報(bào)技術(shù)規(guī)范第1部分:黃瓜霜霉病
- DB31/T 1402-2023養(yǎng)老機(jī)構(gòu)認(rèn)知障礙照護(hù)單元設(shè)置和服務(wù)要求
- DB31/T 1224-2020燃?xì)夥植际焦┠芟到y(tǒng)運(yùn)行維護(hù)規(guī)程
- DB31/T 1146.5-2021智能電網(wǎng)儲(chǔ)能系統(tǒng)性能測(cè)試技術(shù)規(guī)范第5部分:風(fēng)電能源穩(wěn)定應(yīng)用
- DB31/ 741-2020碳酸飲料單位產(chǎn)品能源消耗限額
- DB31/ 574-2011鋁箔單位產(chǎn)品能源消耗限額
- 二級(jí)公立醫(yī)院績(jī)效考核三級(jí)手術(shù)目錄(2020版)
- 2023年遼寧省普通高等學(xué)校招生錄取普通類本科批(物理學(xué)科類)投檔最低分
- 電裝 集團(tuán)禁限用工藝-2013版
- 燃?xì)庑袠I(yè)數(shù)字化轉(zhuǎn)型與智能化
- VDA6.3檢查要求與證據(jù)清單(VDA6.3檢查表)
- 牙周檢查記錄表
- 外墻涂料吊籃施工方案
- 《新時(shí)代勞動(dòng)教育》新時(shí)代勞動(dòng)價(jià)值觀
- 山東紫薇種質(zhì)資源調(diào)查報(bào)告
- 2023年醫(yī)療招聘技術(shù)類-影像醫(yī)學(xué)與核醫(yī)學(xué)考試歷年真題集錦附答案
- “循環(huán)經(jīng)濟(jì)關(guān)鍵技術(shù)與裝備”重點(diǎn)專項(xiàng)2023年度項(xiàng)目申報(bào)指南
評(píng)論
0/150
提交評(píng)論