第6章Java的可重用類_第1頁(yè)
第6章Java的可重用類_第2頁(yè)
第6章Java的可重用類_第3頁(yè)
第6章Java的可重用類_第4頁(yè)
第6章Java的可重用類_第5頁(yè)
已閱讀5頁(yè),還剩52頁(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)介

封面Java網(wǎng)絡(luò)編程基礎(chǔ)JAVA網(wǎng)絡(luò)編程基礎(chǔ)第1章

Java語(yǔ)言概述第2章Java的開(kāi)發(fā)環(huán)境基本知識(shí)

第3章Java語(yǔ)言基礎(chǔ)

第4章Java面向?qū)ο蟪绦蛟O(shè)計(jì)第5章異常處理第6章Java的基本可重用類第7章

圖形用戶界面第8章多線程程序設(shè)計(jì)

第9章網(wǎng)絡(luò)基礎(chǔ)與URL編程

第10章Java小應(yīng)用程序Applet第11章Java文件存檔第六章Java的基本可重用類

6.1Java主要的可重用包6.2Java語(yǔ)言包6.3Java.util包6.4輸入與輸出流的運(yùn)用6.5綜合應(yīng)用示例小結(jié)

習(xí)題

面向?qū)ο蠹夹g(shù)是迄今為止提高軟件可重用性的最有效的途徑之一,其中類和類的繼承機(jī)制為提高程序的可重用性提供了強(qiáng)有力的支持。6.1Java主要的可重用包

Java有一系列功能強(qiáng)大的可重用類,異常類也是Java可重用類。功能相關(guān)的可重用類組織成包??芍赜妙惖睦^承層次和包的組織呈樹(shù)型結(jié)構(gòu)。Java可重用類按功能劃分為:

語(yǔ)言包java.lang(lang意為language)

輸入/輸出包java.io

實(shí)用程序包java.util(util意為utility)

小應(yīng)用程序包java.applet

圖形用戶接口包java.awt、java.swing

網(wǎng)絡(luò)包

前三種包稱為基礎(chǔ)包,后三種包稱為應(yīng)用包。圖6-1

給出了Jave資源的層次結(jié)構(gòu)。其中,矩形框表示包,橢圓框表示包中的類,本章其余的圖均如此表示。JavaJava.langJJava.ioJava.utilJava.appletJava.swing…..…..…..…..…..圖6-1Java工具包層次圖Java.lang.MathJava.lang.SystemJava.io.FileJava常用包簡(jiǎn)介:(1)java.lang包

主要含有與語(yǔ)言相關(guān)的類。java.lang包由解釋程序自動(dòng)加載,不需顯式說(shuō)明。(2)jave.io包

主要含有與輸入輸出相關(guān)的類,這些類提供了對(duì)不同的輸入輸出設(shè)備讀寫數(shù)據(jù)的支持,這些輸入和輸出設(shè)備包括鍵盤、顯示器、打印機(jī)、磁盤文件和網(wǎng)絡(luò)等。(3)java.util包

包括許多具有特定功能的類,有日期、向量、哈希表、鎖和堆棧等,其中Date類支持與時(shí)間有關(guān)的操作。(4)java.awt包和java.swing包

提供了創(chuàng)建圖形用戶界面元素的類。通過(guò)這些元素,編程者可以控制所寫Applet或用戶程序的外觀界面。該包中包含定義窗口、對(duì)話框、按鈕、復(fù)選框、列表、菜單、滾動(dòng)條及文本域的類。(5)包

含有與網(wǎng)絡(luò)操作相關(guān)性的類,如URL、TCPsockets以及二進(jìn)制向ASCII碼轉(zhuǎn)換的工具。(6)java.applet包

含有控制Hotjava瀏覽器的類,這些可以控制HTML文檔格式、應(yīng)用程序中的聲音資源等,其中Applet類是用來(lái)創(chuàng)建包含于HTML頁(yè)內(nèi)的applet必不少的類。(7)java.text包為國(guó)際化的應(yīng)用程序提供類,包括:日期格式、數(shù)字、貨幣格式以及排序的順序等。(8)java.beans包JavaBeans定義了應(yīng)用程序編程接口(API);JavaBeans是Java應(yīng)用程序環(huán)境的中性平臺(tái)組件結(jié)構(gòu)。6.2Java語(yǔ)言包(Java.lang)

Java語(yǔ)言包簡(jiǎn)介6.2.1字符串類6.2.2Math類

java.lang包含了Object類,java.lang.Object類是Java中整個(gè)類層次結(jié)構(gòu)的根節(jié)點(diǎn),這個(gè)軟件包還定義了基本數(shù)據(jù)類型的類:String、Boolean、Character、Byte、Integer、Short、Long、Float、Double。這些類支持?jǐn)?shù)字型的轉(zhuǎn)換和字符串操作。Java語(yǔ)言包(Java.lang)簡(jiǎn)介Java語(yǔ)言的核心部分是java.lang,它定義了Java中的大多數(shù)基本的類。java.lang包由解釋程序自動(dòng)加載,不需顯式說(shuō)明(即不需用import引入)。下面是java.lang中的其他類:

Class——為運(yùn)行時(shí)搜集信息,如對(duì)instanceof操作符提供支持。

Math——提供像pi和e這樣的數(shù)學(xué)常數(shù)及各種函數(shù)。

System——提供對(duì)操作系統(tǒng)的訪問(wèn),包括默認(rèn)的I/O流環(huán)境變量、自動(dòng)垃圾收集、系統(tǒng)時(shí)間和系統(tǒng)屬性;許多System方法可訪問(wèn)Runtime類的方法。

Runtime——提供對(duì)操作系統(tǒng)的訪問(wèn):使用java.lang.System可以更容易地訪問(wèn)大多數(shù)Runtime方法;唯一的例外是exec方法,它開(kāi)始一個(gè)新進(jìn)程。

Thread——和java.lang.Runnable接口協(xié)同作用提供Java中的多線程的支持。

Throwable——它是Java中所有異常(Exception)的基類,是java.lang.Exception、java.lang.Error和java.lang.RuntimeException的父類。應(yīng)用程序運(yùn)行時(shí)發(fā)生意外時(shí),異常和錯(cuò)誤類就發(fā)出信號(hào)。它在第5章作了介紹。Java語(yǔ)言包(Java.lang)簡(jiǎn)介6.2.1

字符串類

1.

String類

2.

StringBuffer類

java.lang提供了兩種字符串類:

String類StringBuffer類另外兩種構(gòu)造方法:publicString(char

value[]);利用一個(gè)字符數(shù)組構(gòu)造一個(gè)字符串public

String(char

value[],int

offset,int

count);

利用字符數(shù)組的offset下標(biāo)開(kāi)始的count個(gè)字符賦構(gòu)造一個(gè)字符串1.String類String類提供的幾種常用的字符串創(chuàng)建方法:

String類可創(chuàng)建一個(gè)對(duì)象,用于代表一個(gè)字符串(不變的字符串),并定義了多種方法以實(shí)現(xiàn)對(duì)字符串的各種操作。例:Strings=”Hello!”;使用字符串常量創(chuàng)建String實(shí)例sStringss=

new

String(s);利用字符串s構(gòu)造String對(duì)象ss(可以使用直接賦值方法,更簡(jiǎn)單:

Stringss=s;)1.String類publicclass

string{

publicstaticvoid

main(Stringargs[]){Strings="Hello";Strings1=

new

String(s);Strings2=

new

String("World!");Strings3=s1+s2;System.out.println(s3);

char

str[]={'a','b','c','d','e'};System.out.println(str);Strings4=new

String(str);System.out.println(s4);s4=new

String(str,2,2);System.out.println(s4);System.out.println(new

String(str,1,3));}}運(yùn)行結(jié)果:HelloWorld!abcdeabcdecdbcd例.創(chuàng)建字符串publicintlength()返回字符串的長(zhǎng)度publiccharcharAt(intindex)返回字符串位置index處的字符

publicbooleanequals(Strings)

與字符串s比較相等否,相等返回true;反之,返回false

publicintcompareTo(Strings)

與字符串s比較字典順序,相等返回0;

當(dāng)前串大于s返回1;當(dāng)前串小于s返回-11.String類

String類提供了豐富的字符串操作方法,主要有:例:Strings="Hello!";

System.out.println(s.length());

//將輸出7

System.out.println(s.charAt(1));

//將輸出e

System.out.println(s.equals("Hello!"));

//將輸出falseSystem.out.println(pareTo(“Hello!"));

//將輸出-1publicbooleanregionMatches(inttoffset,StringOther,intoffset,intlen)

從當(dāng)前串中位置toffset起尋找串Other中起始位置為offset、長(zhǎng)度為len的子串.如發(fā)現(xiàn)匹配,返回true;否則,返回falsepublicbooleanstartsWith(Stringprefix)

如當(dāng)前串以串prefix開(kāi)始則返回true;否則返回falsepublicbooleanendsWith(Stringsuffix)

如當(dāng)前串以串suffix結(jié)尾則返回true;否則返回false1.String類例:Strings="HelloWorld!";

System.out.println(s.startsWith(“He”));

//將輸出true

System.out.println(s.startsWith(“ello”));

//將輸出false

System.out.println(s.endsWith(“World!”));

//將輸出true

System.out.println(s.endsWith(“World”));

//將輸出falsepublicintindexOf(Stringstr)

在當(dāng)前字符串中尋找與str匹配的子串,返回首次匹配的起始下標(biāo)值,無(wú)匹配返回-1。publicStringsubstring(intbeginIndex,intendIndex)

在當(dāng)前字符串中,求從起始位置beginIndex到結(jié)束位置

endIndex的子串publicStringconcat(Stringstr)

將當(dāng)前字符串與str連接,返回連接后的字符串

(注:使用“+”運(yùn)算符更方便)publicStringtoLowertCase()

返回當(dāng)前字符串全轉(zhuǎn)換為小寫后的字符串publicStringtoUpperCase()

返回當(dāng)前字符串全轉(zhuǎn)換為大寫后的字符串1.String類publicChartoCharArray()返回當(dāng)前字符串轉(zhuǎn)換成的字符數(shù)組publicstaticStringvalueOf(typevariable)

返回由variable轉(zhuǎn)換成的字符串.注意:這是個(gè)靜態(tài)方法1.String類注意:String類的所有方法都不會(huì)改變String類對(duì)象本身的值!例如有如下語(yǔ)句:

s1="abc";s2=s1.trim();則執(zhí)行后,s1、s2中存放的字符串分別為

“abc”和“abc”

String類實(shí)現(xiàn)一種不能改變的靜態(tài)字符串,StringBuffer類實(shí)現(xiàn)一種動(dòng)態(tài)可變的字符串。StringBuffer類可以用于創(chuàng)建String類,StringBuffer一旦建好,用toString()方法將其轉(zhuǎn)換為String類。以后,就可以使用String類方法來(lái)操作。

2.StringBuffer類StringBuffer類提供三種創(chuàng)建方法:

publicStringBuffer();創(chuàng)建一個(gè)空的StringBuffer類

publicStringBuffer(intlength);

創(chuàng)建一個(gè)大小為length的StringBuffer類

publicStringBuffer(Stringstr);

按str創(chuàng)建一個(gè)動(dòng)態(tài)可變的StringBuffer類

StringBuffer類提供的方法主要用于把輸入數(shù)據(jù)轉(zhuǎn)換為String類。輸入數(shù)據(jù)可來(lái)自鍵盤或其它數(shù)據(jù)源。類型可以是字符、字符數(shù)組、整數(shù)、浮點(diǎn)數(shù)、和Object類型等。2.StringBuffer類StringBuffer的主要方法:publicintlength()

返回緩沖區(qū)的字符數(shù)。publicintcapacity()返回緩沖區(qū)剩余空間。publicsynchronizedStringBufferappend(typevariable)

把variable轉(zhuǎn)換為字符串,然后與當(dāng)前串相連publicsynchronizedStringBuffer

append(Char(charch))

把字符ch連接到當(dāng)前串尾publicsynchronizedStringBufferinsert(intoffset,typevariable)

把variable轉(zhuǎn)換為字符串,然后插入到當(dāng)前串由offset指定的位置

例6.1利用StringBuffer類將鍵盤輸入的數(shù)據(jù)建立一個(gè)字符串。importjava.io.*;publicclassStringBufferToString{publicstaticvoid

main(Stringargs[]){charch;try2.StringBuffer類publicsynchronizedStringBufferinsert(intoffset,charch)

把字符ch插入到當(dāng)前串由offset指定的位置

publicsynchronizedStringtoString()

把StringBuffer轉(zhuǎn)換為字符串String

{intlength=20;

//置StringBuffer的大小為20

StringBufferstrb=newStringBuffer(length);

while((ch=System.in.read())!=’\n’){strb.append(ch)}

Stringstr=strb.toString();System.out.println(str);}catch(IOExceptione){}}}2.StringBuffer類1.三角函數(shù)

2.乘方

3.舍入4.其他

java.lang.Math類是標(biāo)準(zhǔn)的數(shù)學(xué)類,封裝了一些數(shù)學(xué)函數(shù)和常量。在這個(gè)類中,數(shù)的大小范圍跟具體的操作平臺(tái)有關(guān)。與System類相似,java.lang.Math類也不能被子類化或?qū)嵗?,因?yàn)樗乃蟹椒ê妥兞恳捕际庆o態(tài)的。

6.2.2Math類

下面的三個(gè)方法接受一個(gè)double類型的且以弧度為單位的角度值,并返回相應(yīng)的運(yùn)算結(jié)果,返回類型均為double型。(1)sin(double

a)返回弧度a的sin值

(2)cos(double

a)返回弧度a的cos值

(3)tan(double

a)返回弧度a的tan值1.三角函數(shù)下面的三個(gè)方法是反三角函數(shù),返回類型均為double型。

(1)asin(double

r)返回sin值為r的弧度

(2)acos(double

r)返回cos值為r的弧度

(3)atan(double

r)返回tan值為r的弧度

例:Math.sin(3.1416/6)將返回0.5000010603626028

例:Math.cos(3.1416/4)將返回0.7071054825112363

例:Math.asin(0.5)將返回0.5235987755982989(即π/6)(1)pow(doublex,double

y)返回xy次方。(2)exp(double

x)返回ex(3)log(double

x)返回x的自然對(duì)數(shù)。(4)sqrt(double

x)返回x的平方根。

(返回類型均為double型)2.乘方(1)ceil(doublea)返回大于或等于a的最小整數(shù)值。(2)floor(doublea)返回小于或等于a的最大整數(shù)值。(3)rint(doublea)返回四舍五入后的整數(shù)值。

(上面三個(gè)方法的返回類型均為double型)(4)round(floata)

返回四舍五入后的整數(shù)值,返回類型為int型。(5)round(doublea)

返回四舍五入后的整數(shù)值,返回類型為long型。3.舍入(1)abs(a)返回a的絕對(duì)值

a可以是

int、long、float、double型,返回類型與a的類型相同。(2)max(a,b)返回a和b的最大值(3)min(a,b)返回a和b的最小值

(2)、(3)中的a、b類型相同,可以是

int、long、float、double型,返回類型與a、b的類型相同。(4)random()返回一個(gè)double型的隨機(jī)實(shí)數(shù),范圍是[0.0,1.0)4.其它6.3.1Java.util包的構(gòu)成6.3.2日期時(shí)間類6.3.3向量類及其使用6.3.4哈希表類及其應(yīng)用

java.util包提供了許多實(shí)用的類,如:日期、向量、哈希表、鎖和堆棧等。6.3java.util包

java.util包由一些實(shí)用類組成的,有些類還是Java語(yǔ)言所不可缺少的。java.util包的大致層次結(jié)構(gòu)如下頁(yè)圖6-4所示。6.3.1java.util包的構(gòu)成java.util.*圖6-4java.util

包層次結(jié)構(gòu)說(shuō)明:

Dictionary是抽象類,Enumeration和Observer是接口,其余屬于普通類;

Hashtable除繼承Dictionary類外,還是java.lang類庫(kù)中Cloneable的一個(gè)實(shí)現(xiàn);

BitSet和Vector除繼承了類Object外,同時(shí)也是java.lang.Cloneable的實(shí)現(xiàn);BitSet是最終類,不能用以創(chuàng)建子類。日期時(shí)間類的實(shí)例可通過(guò)如下幾種方法予以創(chuàng)建:

1)publicDate()

這個(gè)構(gòu)造方法將把當(dāng)前日期和時(shí)間保存于所創(chuàng)建的Date實(shí)例。

2)publicDate(intyear,intmonth,intdate)

這個(gè)構(gòu)造方法將根據(jù)所給定的year、month、date參數(shù)創(chuàng)建一個(gè)Date實(shí)例。也就是說(shuō),利用此構(gòu)造方法,所創(chuàng)建的Date實(shí)例表示的日期與年、月、日參數(shù)表示的日期等同。6.3.2日期時(shí)間類(Date)

日期時(shí)間類是一個(gè)相對(duì)簡(jiǎn)單、但使用頻繁的類,它提供了獨(dú)立于具體系統(tǒng)的日期/時(shí)間的表示形式。3)publicDate(intyear,intmonth,intdate,inthours,intminutes)

這個(gè)構(gòu)造方法類似于第(2)個(gè)方法,只不過(guò)這里還提供了具體的小時(shí)(hours)和分鐘(minutes)參數(shù),因而時(shí)間要更為精確。4)publicDate(intyear,intmonth,intdate,inthours,intminutes,intseconds)

這個(gè)構(gòu)造方法類似于第(3)個(gè)方法,所不同的是這里還提供了具體的(seconds)參數(shù),時(shí)間又精確了一些。

一旦創(chuàng)建了日期時(shí)間類的一個(gè)實(shí)例,就可以用它的方法來(lái)檢索有關(guān)日期和時(shí)間的信息。

下面是日期時(shí)間類的一些方法:

publicintgetYear();

返回當(dāng)前日期中的年份

publicintgetMonth();

返回當(dāng)前日期中的月份

publicintgetDate();

返回當(dāng)前日期中的日(0-31)

publicintgetDay();

確認(rèn)某天是星期幾

publicintgetHours();返回當(dāng)前日期中的小時(shí)數(shù)

publicintgetMinutes();返回當(dāng)前日期中的分鐘數(shù)

publicintgetSeconds();返回當(dāng)前日期中的秒數(shù)

publicbooleanbefore(Datewhen);對(duì)日期實(shí)例所代表的時(shí)間和when進(jìn)行比較.若比when早,返回true;否則返回false

publicbooleanafter(Datewhen);對(duì)日期實(shí)例所代表的時(shí)間和when進(jìn)行比較。若比when晚,返回true;否則返回false

publicbooleanequal(Objectobj);

比較兩個(gè)日期對(duì)象,若相等則返回true;否則返回falsepublicStringtoString();返回當(dāng)前日期參數(shù)的字符串表示形式。注意:不同主機(jī)系統(tǒng)的日期表示形式不盡相同

日期時(shí)間類的使用非常簡(jiǎn)單,只需要?jiǎng)?chuàng)建一個(gè)類實(shí)例不帶任何參數(shù),即可以生成一代表當(dāng)前日期的類。如下所示:

Datetoday=

new

Date();

System.out.println(today.toString());

或者也可用一更為簡(jiǎn)單的方式:

System.out.println(today);

后一種方式中,println將自動(dòng)調(diào)用toString方法,因而無(wú)需顯式調(diào)用。6.3.3向量類(Vector)及其使用

1.向量和數(shù)組的異同2.向量類的構(gòu)造方法、屬性和方法3.建立向量實(shí)例4.向量的使用5.對(duì)象查找

向量(Vector)和數(shù)組存在許多相似之處,它們都是類,均可用以保存列表。數(shù)組只能保存固定大小的列表,列表中元素的類型必須一致,必須一次申請(qǐng)所有的存儲(chǔ)單元。如果事先無(wú)法確定列表內(nèi)究竟要存放多少對(duì)象,Java的數(shù)組就無(wú)能為力了。向量卻提供了一種與“動(dòng)態(tài)數(shù)組”相近的概念,它可以動(dòng)態(tài)地增加它的列表長(zhǎng)度,列表中元素的類型還可以不一致,但必須都是對(duì)象。另外,向量提供了比數(shù)組更多的方法。

盡管向量與數(shù)組相比有許多重要的優(yōu)點(diǎn),但它也有一些不足之處,其中之一是它不能直接存儲(chǔ)簡(jiǎn)單數(shù)據(jù)類型。1.向量和數(shù)組的異同下列場(chǎng)合較適合于使用向量:

1)如果需要頻繁進(jìn)行對(duì)象的插入和刪除工作,或者需要處理的對(duì)象數(shù)目不定;

2)列表成員全部都是對(duì)象(類型可不一致),或者可以用對(duì)象方便地表示;

3)需要很快確定列表內(nèi)是否存在某一特定對(duì)象,并且希望很快了解到對(duì)象的存放位置。下列場(chǎng)合較適合于使用數(shù)組:

1)所需處理的對(duì)象類型一致,數(shù)目固定或大致可以確定,盡管具體對(duì)象經(jīng)常發(fā)生變化;

2)所需處理的是簡(jiǎn)單數(shù)據(jù)類型。

由于向量只能存儲(chǔ)對(duì)象,故如果需要把簡(jiǎn)單數(shù)據(jù)類型保存到向量,必須使用Java的數(shù)據(jù)類型類,因此,有些場(chǎng)合下使用數(shù)組要比使用向量方便一些。1.向量和數(shù)組的異同向量類共有3種形式的構(gòu)造方法,如下所示:

Vector(int

capacity,intcapacityIncrement);

用指定的向量容量及其增量參數(shù),創(chuàng)建一個(gè)空向量

Vector(int

capacity);

用給定的向量容量參數(shù),創(chuàng)建一空向量

Vector();創(chuàng)建一空向量2.向量類的構(gòu)造方法、屬性和方法

要使用向量,首先必須創(chuàng)建一個(gè)Vector類實(shí)例,這通過(guò)向量的構(gòu)造方法創(chuàng)建。

為優(yōu)化存儲(chǔ)管理,Java的每個(gè)向量均可以使用一個(gè)“向量容量”參數(shù)和一個(gè)“容量增量”參數(shù)。向量容量——向量中可存放的元素個(gè)數(shù)

容量增量——規(guī)定了每當(dāng)向量元素個(gè)數(shù)達(dá)到極限時(shí),需一次性擴(kuò)充的向量容量大小向量容量、容量增量

“容量增量”參數(shù)說(shuō)明,當(dāng)向向量增加元素時(shí),如果向量?jī)?nèi)元素個(gè)數(shù)已經(jīng)達(dá)到了向量的極限大小,向量就要申請(qǐng)擴(kuò)充容量,但它不是申請(qǐng)一個(gè)元素的空間,而是多個(gè)元素的空間,數(shù)目由容量增量參數(shù)確定。如果容量增量參數(shù)為0,則每次向量容量都將增加一倍大小。設(shè)置這兩個(gè)參數(shù)可提高向量類的使用效率??梢院雎赃@兩個(gè)參數(shù),這時(shí)Java將自動(dòng)為維護(hù)向量的使用,包括必要時(shí)向量的增容等。向量類提供了如下3個(gè)屬性變量:

protectedintcapacityIncrement;

當(dāng)向量大小不足時(shí),所用的增量大小

protectedintelementCount;

向量的元素個(gè)數(shù)

protectedObjectelementData[];

向量成員數(shù)據(jù)所用的緩沖publicfinalsynchronizedvoidcopyInto(ObjectanArray[]);

把向量元素拷貝到指定數(shù)組publicfinalsynchronizedvoidtrimToSize();

把向量容量調(diào)整到正好等于向量元素個(gè)數(shù)以壓縮向量的存儲(chǔ)空間。這樣,隨后的插入操作將導(dǎo)致重新申請(qǐng)內(nèi)存空間publicfinalsynchronizedvoidsetSize(intnewSize);

設(shè)置向量大小。如果向量被縮小,多余的元素將被截?cái)?如果被放大,新增的向量元素將置為nullpublicfinalintcapacity()

返回向量容量publicfinalintsize()

返回向量的元素個(gè)數(shù),注意和capacity()之間的區(qū)別

一旦創(chuàng)建了一個(gè)向量類的實(shí)例,就可以用它的方法來(lái)執(zhí)行插入、刪除及查找對(duì)象等操作。向量類提供了極為豐富的方法,下面是其中一些主要的方法:publicfinalBooleanisEmpty()

若向量不包括任何元素,返回true;否則返回falsepublicfinalsynchronizedEnumerationelements()

返回向量元素所對(duì)應(yīng)的枚舉值,以便隨后用

Enumeration()方法獲取該向量元素publicfinalbooleancontains(Objectelem)

若向量中包括了對(duì)象elem,返回true;否則返回falsepublicfinalintindexOf(Objectelem)

返回向量下標(biāo);若對(duì)象不存在,返回-1publicfinalsynchronizedintindexOf(Objectelem,intindex)

從指定位置(index)開(kāi)始搜索向量,返回對(duì)象所對(duì)應(yīng)的向量下標(biāo)值。若未找到對(duì)象,返回-1publicfinalintlastIndexOf(Objectelem)

從向量末尾向前搜索向量,返回對(duì)象的下標(biāo)值publicfinalsynchronizedintlastIndexOf(Objectelem,intindex)

從指定位置開(kāi)始向前搜索向量,返回給定對(duì)象的下標(biāo)值publicfinalsynchronizedObjectelementAt(intindex)

返回指定下標(biāo)處的對(duì)象。若下標(biāo)值非法,拋出一

ArrayIndexOutOfBoundsException異常情況publicfinalsynchronizedObjectfistElement()

返回向量的第一個(gè)元素。若向量為空,拋出一個(gè)

NoSuchElementException異常情況publicfinalsynchronizedObjectlastElement()

返回向量的最后一個(gè)元素。若向量為空,拋出一

NoSuchElementException異常情況

publicfinalsynchronizedvoidsetElementAt(Objectobj,intindex)

把給定對(duì)象存放到給定下標(biāo)處,該下標(biāo)處的原有對(duì)象丟失.若下標(biāo)值非法,拋出異常情況ArrayIndexOutOfBoundsExceptionpublicfinalsynchronizedvoidremoveElementAt(intindex)

刪除給定下標(biāo)處的向量元素,后面元素前移一個(gè)位置。若下標(biāo)值非法,拋出異常情況ArrayIndexOutOfBoundsException

publicfinalsynchronizedvoidinsertElementAt(Objectobj,intindex)

把給定對(duì)象插入到指定下標(biāo)處.該下標(biāo)之后的元素后移一個(gè)位置.若下標(biāo)值非法,拋出異常ArrayIndexOutOfBoundsExceptionpublicfinalsynchronizedvoidaddElement(Objectobj)

把給定對(duì)象增加到向量末尾publicfinalsynchronizedbooleanremoveElement(Objectobj)

從向量中刪除指定對(duì)象。若給定對(duì)象在向量中有多個(gè),則只刪除其第一個(gè)實(shí)例。若向量中沒(méi)有這個(gè)對(duì)象,返回falsepublicfinalsynchronizedvoidremoveAllElements()

刪除向量中的所有對(duì)象。這時(shí)向量將變成空向量publicfinalsynchronizedStringtoString()

把向量轉(zhuǎn)換成字符串。請(qǐng)注意:這個(gè)方法實(shí)際上覆蓋了Object類中的toString()方法

和數(shù)組一樣,向量需要聲明并實(shí)例化才可使用,其內(nèi)存空間通過(guò)new操作符分配的。例如:

VectortheVector=newVector();一個(gè)向量在被創(chuàng)建后,將自行在系統(tǒng)內(nèi)部維護(hù)一個(gè)專用數(shù)組,并在必要時(shí)對(duì)數(shù)組大小進(jìn)行動(dòng)態(tài)調(diào)整。例如,如果插入一個(gè)向量元素時(shí),向量的空間需求超過(guò)了這個(gè)內(nèi)部數(shù)組的大小,向量將向系統(tǒng)申請(qǐng)一些新的內(nèi)存空間。3.建立向量實(shí)例

例:

VectortheVector=

new

Vector();

for(inti=0;i<10;i++)

{

IntegernewInteger=

new

Integer(i);

theVector.addElement(newInteger);

}

4.向量的使用

創(chuàng)建向量實(shí)例之后,就可以把對(duì)象插入到向量。這時(shí)將用addElement()方法。addElement()方法把對(duì)象插入到向量末尾。

向量可用以保存任何類型的對(duì)象,同一個(gè)向量實(shí)例甚至還可以保存多種不同類型的對(duì)象。VectortheVector=new

Vector();StringtestString;

testString=“pai”;

theVector.addElement(testString);

FloattestFloat=newFloat(3.14);

theVector.addElement(testFloat);

testString=“Faill”;

theVector.addElement(testString);

testFloat=newFloat(59);//注:書上少此句

theVector.addElement(testFloat);

增加向量元素的另一方式是通過(guò)insertElementAt()方法。該方法把對(duì)象插入到向量的給定位置。下面的例子是給向量交錯(cuò)插入一些浮點(diǎn)數(shù)和字符串。執(zhí)行這段代碼,將建立如下向量:

{“pai”,3.14,“Faill”,59}

另一經(jīng)常用到的維護(hù)操作是從向量中刪除一個(gè)對(duì)象。這時(shí)有3個(gè)方法可用:

removeElement();刪除指定對(duì)象

removeElementAt();刪除給定位置處的對(duì)象

removeAllElement();刪除所有向量成員

前兩個(gè)方法在刪除一個(gè)元素之后,后面的對(duì)象將前移一個(gè)位置。

對(duì)于前面例子中介紹的向量,下面語(yǔ)句將刪除其中的3.14和59,而不是3.14和“Faill”。

FloatdeleteFloat=

new

Float(3.14);

theVector.removeElement(deleteFloat);

theVector.removeElementAt(2);

與數(shù)組相比,向量的優(yōu)勢(shì)之一在于它提供了豐富的方法,以便能方便快捷地從向量中查找對(duì)象。對(duì)象查找中最常遇見(jiàn)的情況是給定一個(gè)下標(biāo)值,希望由此確定該下標(biāo)處的對(duì)象。這時(shí)可使用elementAt()方法。5.對(duì)象查找

對(duì)應(yīng)前面的程序,下面這行程序返回一對(duì)象引用,該引用指向向量成員”pai”

ObjecttempObj=theVector.elementAt(0);

當(dāng)需要確定向量中是否包括了某一確定的對(duì)象時(shí),可使用contains()方法。publicfinalBoolean

contains(Objectelem);

這個(gè)方法返回一布爾值。若向量包含了對(duì)象elem,返回true,否則返回false。

用下標(biāo)來(lái)訪問(wèn)數(shù)組元素,這是使用數(shù)組的最有效方法。向量成員也可用下標(biāo)進(jìn)行訪問(wèn),

方法有:

elementAt()

返回給定下標(biāo)處的對(duì)象

indexOf()

從給定下標(biāo)處往后搜索向量中是否包含指定的的對(duì)象

lastIndexOf()從給定下標(biāo)處往前搜索向量中是否包含指定的的對(duì)象利用下標(biāo)進(jìn)行訪問(wèn)

indexOf()和lastIndexOf()方法的完整聲明形式如下:

publicfinalsynchronizedint

indexOf(Objectelem,intstart_index)

public

finalsynchronizedint

lastIndexOf(Objectelem,

int

start_index)

這兩個(gè)方法均用以從給定下標(biāo)開(kāi)始搜索向量,確定向量中是否包含了指定的對(duì)象。如果是,則返回該對(duì)象的下標(biāo)值,否則返回-1。1.哈希表類的構(gòu)造方法和成員方法

2.哈希表的使用

哈希表和向量一樣,可用以保存列表,列表中元素也必須都是對(duì)象。哈希表是一種支持對(duì)表中元素進(jìn)行快速檢索的線性表,該線性表的重要特征在于表中元素的平均檢索時(shí)間與表中的元素個(gè)數(shù)無(wú)關(guān)。哈希表是利用“碼值(關(guān)鍵字)—元素”形式的存儲(chǔ)列表的元素,其中“碼值”表示元素在哈希表中的編碼(相當(dāng)于索引),“元素”是元素的實(shí)際值。6.3.4哈希表類(Hashtable)及其應(yīng)用1)構(gòu)造方法

哈希表(Hashtable)類共有三種形式的構(gòu)造方法:

public

Hashtable(int

initialCapacity,floatloadFactor);

參數(shù)initialCapacity給定哈希表創(chuàng)建初始可容納的元素?cái)?shù)量,loadFactor為裝載因子,取值0.

溫馨提示

  • 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)論