版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于體育課件教學(xué)課件
- 2024年度成都農(nóng)產(chǎn)品批發(fā)市場(chǎng)運(yùn)營(yíng)合同
- 2024年度廣告發(fā)布合同:某品牌廣告投放協(xié)議
- 2024年建筑工程施工安全管理協(xié)議
- 20245G基站建設(shè)項(xiàng)目合同
- 2024年定期貨物運(yùn)輸協(xié)議
- 2024年上海房屋裝修工程維修合同
- 2024年度★店鋪轉(zhuǎn)讓及財(cái)務(wù)交接合同
- 2024年城市公共藝術(shù)裝置安裝工程分包合同
- 04版房地產(chǎn)買賣與開(kāi)發(fā)合同
- 《中華商業(yè)文化》第六章
- 醫(yī)院玻璃采光頂玻璃雨棚施工方案
- 運(yùn)籌學(xué)-隨機(jī)規(guī)劃課件
- 《電阻》說(shuō)課課件
- 同濟(jì)外科學(xué)課件之頸腰椎退行性疾病
- 杜邦杜邦工程塑料課件
- 砌體工程監(jiān)理實(shí)施細(xì)則
- 運(yùn)輸車輛衛(wèi)生安全檢查記錄表
- 房建裝修修繕工程量清單
- 部編版四年級(jí)道德與法治上冊(cè)第8課《網(wǎng)絡(luò)新世界》優(yōu)質(zhì)課件
- 柴油發(fā)電機(jī)組應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論