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