java語言考點介紹_第1頁
java語言考點介紹_第2頁
java語言考點介紹_第3頁
java語言考點介紹_第4頁
java語言考點介紹_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論