java語(yǔ)言考點(diǎn)介紹_第1頁(yè)
java語(yǔ)言考點(diǎn)介紹_第2頁(yè)
java語(yǔ)言考點(diǎn)介紹_第3頁(yè)
java語(yǔ)言考點(diǎn)介紹_第4頁(yè)
java語(yǔ)言考點(diǎn)介紹_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論