第6章數(shù)組、字符串和實(shí)用類_第1頁
第6章數(shù)組、字符串和實(shí)用類_第2頁
第6章數(shù)組、字符串和實(shí)用類_第3頁
第6章數(shù)組、字符串和實(shí)用類_第4頁
第6章數(shù)組、字符串和實(shí)用類_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第第6章章 數(shù)組、字符數(shù)組、字符串和實(shí)用類串和實(shí)用類數(shù)組數(shù)組字符串類字符串類數(shù)組類和向量類數(shù)組類和向量類Java語言基礎(chǔ)類庫語言基礎(chǔ)類庫 實(shí)例學(xué)習(xí)實(shí)例學(xué)習(xí)課程內(nèi)容二二三三四四五五一一項(xiàng)目學(xué)做項(xiàng)目學(xué)做六六一、數(shù)組一、數(shù)組 一、數(shù)組一、數(shù)組 數(shù)組就是一組命名變量,其中的每個(gè)變量被稱數(shù)組就是一組命名變量,其中的每個(gè)變量被稱之為數(shù)組元素。之為數(shù)組元素。根據(jù)下標(biāo)個(gè)數(shù)的多少分類:根據(jù)下標(biāo)個(gè)數(shù)的多少分類: 數(shù)組是有序數(shù)據(jù)的集合數(shù)組是有序數(shù)據(jù)的集合數(shù)組是一種最簡單的復(fù)合數(shù)據(jù)類型數(shù)組是一種最簡單的復(fù)合數(shù)據(jù)類型數(shù)組中的每個(gè)元素具有相同的數(shù)據(jù)類型數(shù)組中的每個(gè)元素具有相同的數(shù)據(jù)類型數(shù)組中的元素可以用一個(gè)統(tǒng)一的數(shù)組名和

2、下標(biāo)來唯一地確定定義定義一維數(shù)組一維數(shù)組多維數(shù)組多維數(shù)組1、一維數(shù)組v 只有只有一個(gè)下標(biāo)一個(gè)下標(biāo)的數(shù)組稱為一維數(shù)組。的數(shù)組稱為一維數(shù)組。v 在使用數(shù)組之前必須要在使用數(shù)組之前必須要初始化初始化v 一維數(shù)組的聲明一維數(shù)組的聲明說明數(shù)組變量的名稱和數(shù)組元素的數(shù)據(jù)類型。聲明格式:聲明格式:datatype arrayName ;或datatype arrayName;其中datatype可以為Java中任意的數(shù)據(jù)類型,包括簡單類型和復(fù)合類型。arrayName為數(shù)組的名字,命名符合標(biāo)識(shí)符的規(guī)定。如:int mathScore;為數(shù)組分配內(nèi)存空間,并為每個(gè)數(shù)組元素賦初始值。 1、一維數(shù)組v 定義數(shù)組的

3、大?。ㄉ暾?qǐng)內(nèi)存空間)定義數(shù)組的大?。ㄉ暾?qǐng)內(nèi)存空間)v 數(shù)組初始化數(shù)組初始化靜態(tài)初始化:靜態(tài)初始化:在聲明和定義數(shù)組的同時(shí),給數(shù)組元素賦初值。動(dòng)態(tài)初始化:動(dòng)態(tài)初始化:先聲明和定義數(shù)組,然后再賦值。 簡單類型簡單類型 復(fù)合類型復(fù)合類型格式:格式:arrayName =new datatype numberOfArrayElemnt;其中,numberOfArrayElemnt表示數(shù)組元素的個(gè)數(shù),即數(shù)組的長度或大小,是整型表達(dá)式。例如:例如:在上面對(duì)mathScore聲明之后,就可以定義其大小。mathScore = new int10;/定義數(shù)組的10個(gè)元素 1、一維數(shù)組v 一維數(shù)組的重定義一維數(shù)

4、組的重定義v 一維數(shù)組的長度(一維數(shù)組的長度(lengthlength屬性)屬性)v 一維數(shù)組元素的引用一維數(shù)組元素的引用其實(shí)數(shù)組是作為其實(shí)數(shù)組是作為對(duì)象對(duì)象來處理的,所有的數(shù)組對(duì)象都有來處理的,所有的數(shù)組對(duì)象都有l(wèi)ength (長度長度)屬性,用來記錄數(shù)組中元素的個(gè)數(shù)。屬性,用來記錄數(shù)組中元素的個(gè)數(shù)。所謂重定義也稱重用,即是在程序中可以改變數(shù)組的大小所謂重定義也稱重用,即是在程序中可以改變數(shù)組的大?。ㄖ匦露x數(shù)組)。(重新定義數(shù)組)。數(shù)組元素的引用方式為:數(shù)組元素的引用方式為:arrayNameindexindex為數(shù)組下標(biāo),它可以為整型常數(shù)或表達(dá)式,下標(biāo)從0開始到arrayName.len

5、gth-1。例例6-1:將多個(gè)學(xué)生某課程的成績放到一個(gè)數(shù)組中,然后計(jì)算學(xué)生的平均成績。(6-1.txt)1、一維數(shù)組v 例例6-1:將多個(gè)學(xué)生某課程的成績放到一個(gè)數(shù)組中,:將多個(gè)學(xué)生某課程的成績放到一個(gè)數(shù)組中,然后計(jì)算學(xué)生的平均成績。(然后計(jì)算學(xué)生的平均成績。(6-1.txt)/* *這是一個(gè)利用數(shù)組存放學(xué)生成績,統(tǒng)計(jì)學(xué)生平均成績的示例程序這是一個(gè)利用數(shù)組存放學(xué)生成績,統(tǒng)計(jì)學(xué)生平均成績的示例程序 *程序的名字是:程序的名字是:AverageScore.java*/ public class AverageScore public static void main(String args) in

6、t score=72,89,65,58,87,91,53,82,71,93,76,68;/聲明定義初始化聲明定義初始化 float average=0.0f;/部分和,最后存放平均值部分和,最后存放平均值 for(int i=0; iscore.length; i+) average+=scorei; /成績累加和(部分和)成績累加和(部分和) average/=score.length; /求平均求平均 System.out.println(average=+average); 1、一維數(shù)組v foreachforeach循環(huán)循環(huán)使用使用foreach循環(huán)遍歷數(shù)組時(shí),無須獲得數(shù)組和集合長度,

7、無須根據(jù)循環(huán)遍歷數(shù)組時(shí),無須獲得數(shù)組和集合長度,無須根據(jù)索引來訪問數(shù)組元素和集合元素,索引來訪問數(shù)組元素和集合元素,foreach循環(huán)會(huì)自動(dòng)遍歷數(shù)組。循環(huán)會(huì)自動(dòng)遍歷數(shù)組。格式:格式:for(type variableName:array | collection)/variableName 自動(dòng)迭代訪問每個(gè)元素 應(yīng)為variableName例例6-2:使用foreach循環(huán)來遍歷數(shù)組元素。(6-2.txt)1、一維數(shù)組v 例例6-2:使用:使用foreach循環(huán)來遍歷數(shù)組元素。(循環(huán)來遍歷數(shù)組元素。(6-2.txt)public class ForEachTest public static

8、void main(String args)String books=大學(xué)計(jì)算機(jī)基礎(chǔ)大學(xué)計(jì)算機(jī)基礎(chǔ),Java程序設(shè)計(jì)程序設(shè)計(jì),操作系統(tǒng)操作系統(tǒng);for(String book:books)System.out.println(book);運(yùn)行結(jié)果運(yùn)行結(jié)果:大學(xué)計(jì)算機(jī)基礎(chǔ)Java程序設(shè)計(jì)操作系統(tǒng) 2、二維數(shù)組v 帶有兩個(gè)下標(biāo)的數(shù)組稱為二維數(shù)組。帶有兩個(gè)下標(biāo)的數(shù)組稱為二維數(shù)組。v 聲明聲明v 初始化初始化與一維數(shù)組類似,可以先聲明后定義,也可將聲明和定義合二為一。聲明與定義格式:聲明與定義格式:datatype arrayName ;或:datatype arrayName;或:arrayName

9、=new datatypearrayLength1 arrayLength2;或:datatype arrayName =new datatypearrayLength1 arrayLength2;靜態(tài)初始化靜態(tài)初始化動(dòng)態(tài)初始化動(dòng)態(tài)初始化 2、二維數(shù)組v 不同長度的二維數(shù)組不同長度的二維數(shù)組v 二維數(shù)組元素的引用二維數(shù)組元素的引用對(duì)二維數(shù)組中的每個(gè)元素,引用方式為:對(duì)二維數(shù)組中的每個(gè)元素,引用方式為:arrayNameindex1index2arrayNameindex1index2例6-3:設(shè)有三個(gè)矩陣A、B、C,A和B矩陣相乘,結(jié)果放入C中,即 C=AB。(6-3.txt)要求:Alm B

10、mn = Cln計(jì)算公式:Cij=aik*bkj 其中: i=0l , j=0n , k=0m在有些具體的應(yīng)用中,每行元素的個(gè)數(shù)不是相等的,在有些具體的應(yīng)用中,每行元素的個(gè)數(shù)不是相等的,Java允許生成具有不同長度的多維數(shù)組。允許生成具有不同長度的多維數(shù)組。2、二維數(shù)組v 例例6-36-3:設(shè)有三個(gè)矩陣:設(shè)有三個(gè)矩陣A A、B B、C C,A A和和B B矩陣相乘,結(jié)果放入矩陣相乘,結(jié)果放入C C中,即中,即 C=AC=AB B。(6-3.txt)(6-3.txt)public class A_multiply_B public static void main(String args) fl

11、oat B= 1,2,3,4,5,6,7,8,9 ;/聲明定義初始化二維數(shù)組聲明定義初始化二維數(shù)組B float A=1,2,3,4,5,6 ;/聲明定義初始化二維數(shù)組聲明定義初始化二維數(shù)組A float C=new float23 ; /聲明定義二維數(shù)組聲明定義二維數(shù)組C int i,j,k; for (i=0; i2;i+) /控制控制C中的行數(shù)中的行數(shù) for (j=0;j3 ;j+)/控制控制C中的列數(shù)中的列數(shù) for (k=0;k3;k+) Cij+=Aik*Bkj;/計(jì)算計(jì)算C中的每個(gè)元素中的每個(gè)元素 System.out.print(Cij+ ); System.out.prin

12、tln(n); 二、字符串類二、字符串類 二、字符串類二、字符串類 1、String類類在在Java語言中,字符是一基本的數(shù)據(jù)類型,而字符串是抽象的語言中,字符是一基本的數(shù)據(jù)類型,而字符串是抽象的數(shù)據(jù)類型,只能使用對(duì)象表示字符串。數(shù)據(jù)類型,只能使用對(duì)象表示字符串。定義定義字符串類字符串類String用于創(chuàng)建字符串對(duì)象,并且創(chuàng)建的字符串(對(duì)象)用于創(chuàng)建字符串對(duì)象,并且創(chuàng)建的字符串(對(duì)象)不能被改變,也就是說字符串對(duì)象中的字符是不能修改的(如在不能被改變,也就是說字符串對(duì)象中的字符是不能修改的(如在一個(gè)字符串對(duì)象中添加字符、刪除字符、修改字符等),稱為一個(gè)字符串對(duì)象中添加字符、刪除字符、修改字符等

13、),稱為字字符串常量符串常量。(1)String類的構(gòu)造函數(shù) String() String(String value) String(char value)例例6-4:使用字符數(shù)組,創(chuàng)建一個(gè)字符串對(duì)象,并顯示字符串對(duì)象中的字符串。(6-4.txt)1、String類類v 例例6-4:使用字符數(shù)組,創(chuàng)建一個(gè)字符串對(duì)象,并顯示字:使用字符數(shù)組,創(chuàng)建一個(gè)字符串對(duì)象,并顯示字符串對(duì)象中的字符串。(符串對(duì)象中的字符串。(6-4.txt)class Array_string public static void main(String args) /聲明定義初始化字符數(shù)組聲明定義初始化字符數(shù)組char

14、c = J, a, v, a, ,i,s, ,O,O,P; String s1 = new String(c);/創(chuàng)建字符串對(duì)象創(chuàng)建字符串對(duì)象String s2 = new String(s1); / System.out.println(s1);/打印打印System.out.println(s2); 二、字符串類二、字符串類(2)字符串的操作對(duì)字符串處理時(shí),可使用String類提供的幾個(gè)常用方法(用于對(duì)字符串進(jìn)行處理):charAt(int index)獲取指定位置的字符;length()求字符串長度;concat(String str)連接兩個(gè)字符串;copyValueOf(char v

15、alue) 字符數(shù)組轉(zhuǎn)換成字符串;replace(char ch1,char ch2) 字符串中的字符ch1用ch2替換;還有其他很多處理字符串的方法。還有其他很多處理字符串的方法。例6-5:比較字符串(6-5.txt)將截取的子字符串放到字符數(shù)組中時(shí),可使用方法void getChars(int startIndex,int endIndex, char target,int targetStart),從startIndex到endIndex的字符在字符數(shù)組target從targetStart起存放,應(yīng)保證能夠容納下。例6-6:截取字符串(6-6.txt)1、String類類v 例例6-5:

16、比較字符串(:比較字符串(6-5.txt)class Equalspublic static void main(String args) String s1 = Hello; String s2 = Hello; String s3 = Good-bye; String s4 = HELLO; System.out.println(s1+ equals + s2 + : +s1.equals(s2);/trueSystem.out.println(s1+ equals +s3+ : +s1.equals(s3);/false System.out.println(s1+ equals +s4

17、+ : +s1.equals(s4);/false System.out.println(s1+ equalsIgnoreCase + s4 + : +s1.equalsIgnoreCase(s4);/true,忽略大小寫,忽略大小寫 System.out.println(s1+ = +s2+: +(s1=s2);/false,=為對(duì)為對(duì)象比較,象比較,/s1與與s2不是一個(gè)對(duì)象,所以不是一個(gè)對(duì)象,所以2不相等。不相等。1、String類類v 例例6-6:截取字符串(:截取字符串(6-6.txt)class getCharspublic static void main(String args

18、) String s = This is a getChars method.; int start = 10;/第一個(gè)字符的位置(索引)為第一個(gè)字符的位置(索引)為0,10代表第代表第11個(gè)字符位置個(gè)字符位置 int end = 18;/第第19個(gè)字符位置個(gè)字符位置 char buf = new charend - start; s.getChars(start, end, buf, 0); System.out.println(buf);運(yùn)行結(jié)果運(yùn)行結(jié)果:getChars 二、字符串類二、字符串類 2、 StringBuffer類類當(dāng)需要當(dāng)需要改變字符串的值改變字符串的值時(shí),可使用時(shí),可使

19、用StringBuffer類,它提供了對(duì)字類,它提供了對(duì)字符串內(nèi)容進(jìn)行動(dòng)態(tài)修改的功能符串內(nèi)容進(jìn)行動(dòng)態(tài)修改的功能動(dòng)態(tài)添加,插入、替換等。動(dòng)態(tài)添加,插入、替換等。(1)該類提供三個(gè)構(gòu)造方法)該類提供三個(gè)構(gòu)造方法 StringBuffer() StringBuffer(int length) StringBuffer(String str) *與與String不同,應(yīng)該使用不同,應(yīng)該使用StringBuffer的構(gòu)造函數(shù)創(chuàng)建對(duì)象,不能的構(gòu)造函數(shù)創(chuàng)建對(duì)象,不能定義定義StringBuffer類型的變量。類型的變量。如:StringBuffer sb =”This is StringBuffer”;是不

20、允許的(2)對(duì)字符串的修改)對(duì)字符串的修改 1)添加操作)添加操作 使用該類的使用該類的append()方法,將一個(gè)字符串添加到一個(gè)字串緩沖區(qū)的后方法,將一個(gè)字符串添加到一個(gè)字串緩沖區(qū)的后面。面。 2)插入操作)插入操作 使用的是使用的是StringBuffer類的類的insert(int offset, representation)方法,用方法,用于在指定的位置插入給定的量。于在指定的位置插入給定的量。 二、字符串類二、字符串類3)刪除)刪除delete(int start,int end)方法用于刪除從方法用于刪除從startend之間的字符串;之間的字符串;deleteCharAt(i

21、nt index)方法用于刪除位置方法用于刪除位置index處的字符。處的字符。4)替換)替換replace(int start,int end,String str)用字符串用字符串str替換替換start到到end之間的字之間的字符串。符串。例6-7:將“Java programming!”中的子串“Java”替換成“This is Turbo C”。(6-7.txt)StringBuffer類中的幾個(gè)常用方法:類中的幾個(gè)常用方法:toString()將字符串緩沖區(qū)轉(zhuǎn)換為字符串;charAt(int index)取指定位置的字符;getChars(int srcBegin,int srcE

22、nd,chardst,int dstBegin)取指定位置的字符到字符數(shù)組dst中l(wèi)ength()返回當(dāng)前對(duì)內(nèi)容的長度;capacity()返回總的容量;ensuareCapacity()設(shè)置容量不夠時(shí)追加的容量大小;reverse()字符串翻轉(zhuǎn)。例6-8:將給定的字符串翻轉(zhuǎn)(6-8.TXT)2、 StringBuffer類類v 例例6-7:將:將“Java programming!”中的子串中的子串“Java”替換成替換成“This is Turbo C”。(。(6-7.txt)class Replacepublic static void main(String args) StringB

23、uffer sb = new StringBuffer(Java programming!); sb.replace(0, 4, This is Turbo C);/第一個(gè)字符位置為第一個(gè)字符位置為0System.out.println(After replace: + sb.toString();/也可使用下面的方法也可使用下面的方法/sb=sb.replace(0, 4, This is Turbo C);/System.out.println(After replace: + sb);運(yùn)行結(jié)果運(yùn)行結(jié)果:This is Turbo C programming!2、 StringBuffer

24、類類v 例例6-8:將給定的字符串翻轉(zhuǎn)(:將給定的字符串翻轉(zhuǎn)(6-8.TXT)class Reversepublic static void main(String args) StringBuffer s = new StringBuffer(123456789); System.out.println(s);s.reverse();/調(diào)用方法,生成逆序即翻轉(zhuǎn)字符串調(diào)用方法,生成逆序即翻轉(zhuǎn)字符串 System.out.println(s);運(yùn)行結(jié)果運(yùn)行結(jié)果:987654321 二、字符串類二、字符串類 3、 StringTokenizer類類StringTokenizer(字符串令牌,字符串

25、標(biāo)記)類主要用于對(duì)字符串(字符串令牌,字符串標(biāo)記)類主要用于對(duì)字符串的分析,可的分析,可將一個(gè)字符串分解成數(shù)個(gè)單元將一個(gè)字符串分解成數(shù)個(gè)單元(Token令牌,每個(gè)單令牌,每個(gè)單元之間以分界符分隔)。元之間以分界符分隔)。StringTokenizer(String str)是構(gòu)造函數(shù)。是構(gòu)造函數(shù)。幾個(gè)常用方法:幾個(gè)常用方法:int countTokens(),返回令牌的數(shù)目;,返回令牌的數(shù)目;boolean hasMoreTokens()檢查是否還有令牌存在;檢查是否還有令牌存在;String nextToken()返回下一個(gè)令牌;返回下一個(gè)令牌;String nextToken(String

26、 delimit)根據(jù)指定的分界符(根據(jù)指定的分界符(delimit),),返回令牌。返回令牌。例6-9:將給定字符串每個(gè)單詞取出來。(6-9.txt)3、 StringTokenizer類類v 例例6-9:將給定字符串每個(gè)單詞取出來。:將給定字符串每個(gè)單詞取出來。(6-9.txt)class Token public static void main(String args) StringTokenizer st=new StringTokenizer(I am a Java newer);String tokens=new Stringst.countTokens();/聲明定義數(shù)組聲明定

27、義數(shù)組for(int i=0;st.hasMoreTokens();i+)/每個(gè)數(shù)組元素存放一個(gè)單詞每個(gè)數(shù)組元素存放一個(gè)單詞tokensi=st.nextToken();/取詞取詞System.out.println(tokensi);/打印打印運(yùn)行結(jié)果運(yùn)行結(jié)果:IamaJavanewer三、數(shù)組類和向量類三、數(shù)組類和向量類 三、數(shù)組類和向量類三、數(shù)組類和向量類 1、數(shù)組數(shù)組Arrays類類 數(shù)組是編程時(shí)最常用的數(shù)據(jù)結(jié)構(gòu)之一,數(shù)組可以包含任何數(shù)數(shù)組是編程時(shí)最常用的數(shù)據(jù)結(jié)構(gòu)之一,數(shù)組可以包含任何數(shù)據(jù)類型,一旦創(chuàng)建便只可存儲(chǔ)指定類型的數(shù)據(jù)。向量的功能更強(qiáng)據(jù)類型,一旦創(chuàng)建便只可存儲(chǔ)指定類型的數(shù)據(jù)。向

28、量的功能更強(qiáng)大,它是大,它是允許不同類型元素共存允許不同類型元素共存的變長數(shù)組。的變長數(shù)組。Array(數(shù)組)類提供了對(duì)數(shù)組運(yùn)算的功能,如排序、搜索等操(數(shù)組)類提供了對(duì)數(shù)組運(yùn)算的功能,如排序、搜索等操作。作。Array類的靜態(tài)方法:類的靜態(tài)方法:static void sort(dadaType d),對(duì)數(shù)組進(jìn)行排序(升序),對(duì)數(shù)組進(jìn)行排序(升序)例6-10:使用Array類對(duì)數(shù)組排序。(6-10.txt)1、數(shù)組數(shù)組Arrays類類v 例例6-10:使用:使用Array類對(duì)數(shù)組排序。類對(duì)數(shù)組排序。(6-10.txt)import java.util.Arrays;class ArraysC

29、lass public static void main(String args) int num=new int10;for(int i=0;i10;i+)/排序前:排序前:numi=(int)(Math.random()*10)+1; /產(chǎn)生產(chǎn)生110隨機(jī)數(shù)隨機(jī)數(shù)System.out.print(numi+ );/打印產(chǎn)生的隨機(jī)數(shù)打印產(chǎn)生的隨機(jī)數(shù)System.out.println(n排序后排序后);Arrays.sort(num);/排序排序for(int i=0;i10;i+)/排序后:排序后:System.out.print(numi+ );/打印排序后的數(shù)打印排序后的數(shù)System

30、.out.println();System.out.println(6的位置是:的位置是:+Arrays.binarySearch(num,6);/搜索搜索6的位置的位置運(yùn)行結(jié)果運(yùn)行結(jié)果:運(yùn)行程序后產(chǎn)生一組隨機(jī)運(yùn)行程序后產(chǎn)生一組隨機(jī)數(shù),并搜索數(shù),并搜索6的位置。由于的位置。由于數(shù)據(jù)是隨機(jī)產(chǎn)生,所以每數(shù)據(jù)是隨機(jī)產(chǎn)生,所以每次運(yùn)行時(shí)數(shù)據(jù)都不同次運(yùn)行時(shí)數(shù)據(jù)都不同 三、數(shù)組類和向量類三、數(shù)組類和向量類 2、向量類向量類VectorJava語言中,數(shù)組只能保存固定數(shù)目的元素,內(nèi)存空間的申請(qǐng)也語言中,數(shù)組只能保存固定數(shù)目的元素,內(nèi)存空間的申請(qǐng)也是一次完成,不能在創(chuàng)建后再追加數(shù)組元素。為此又引入了向量是一次

31、完成,不能在創(chuàng)建后再追加數(shù)組元素。為此又引入了向量類類Vector。向量也是一組對(duì)象的集合,但它可以向量也是一組對(duì)象的集合,但它可以追加對(duì)象元素的數(shù)量追加對(duì)象元素的數(shù)量,相當(dāng),相當(dāng)于一個(gè)于一個(gè)變長數(shù)組變長數(shù)組。在這些場合中,使用在這些場合中,使用Vector比較方便比較方便:對(duì)象的數(shù)目不定;對(duì)象的數(shù)目不定;序列中的元素都是對(duì)象;序列中的元素都是對(duì)象;組合不同類的對(duì)象成一序列;組合不同類的對(duì)象成一序列;頻繁地插入或刪除序列中的對(duì)象。頻繁地插入或刪除序列中的對(duì)象。 三、數(shù)組類和向量類三、數(shù)組類和向量類(1)聲明并創(chuàng)建)聲明并創(chuàng)建Vector對(duì)象對(duì)象 Vector類的構(gòu)造函數(shù):類的構(gòu)造函數(shù): Vec

32、tor(); Vector(Collection c); Vector(int initialCapacity); Vector(int initialCapacity,int capacityIncrement);(2)幾個(gè)常用的方法)幾個(gè)常用的方法 1)向向量中增加一個(gè)元素(不是插入元素)向向量中增加一個(gè)元素(不是插入元素) add(int index,Object element); 2)批量增加元素)批量增加元素 addAll(Collection c); 3)獲取向量的容量空間(余量空間)獲取向量的容量空間(余量空間) int capacity(); 4)指定位置插入元素)指定位置插

33、入元素 insertElement(Object obj,int index);例6-11:向量類的應(yīng)用。創(chuàng)建一個(gè)向量對(duì)象,將其他對(duì)象如字符串添加到向量中,然后為字符串排序。(6-11.txt)2、向量類向量類Vectorv 例例6-11:向量類的應(yīng)用。創(chuàng)建一個(gè)向量對(duì)象,將其他對(duì)象如字符串:向量類的應(yīng)用。創(chuàng)建一個(gè)向量對(duì)象,將其他對(duì)象如字符串添加到向量中,然后為字符串排序。添加到向量中,然后為字符串排序。(6-11.txt)import java.util.*;class VectorExm public static void main(String args) Vector vect=new

34、 Vector();/空向量對(duì)象空向量對(duì)象String str=ZS張三張三,LS李四李四,WW王五王五,ZL趙六趙六;for(int j=0;jstr.length;j+)vect.add(strj);/對(duì)象添加到向量中對(duì)象添加到向量中Collections.sort(vect);/對(duì)向量的對(duì)象排序?qū)ο蛄康膶?duì)象排序for(int j=0;j0)b=Integer.parseInt(args0);/命令行帶一個(gè)參數(shù)命令行帶一個(gè)參數(shù)if(b=0)System.out.println(應(yīng)用程序正常結(jié)束應(yīng)用程序正常結(jié)束);System.exit(b); else/異常退出異常退出System.out

35、.println(應(yīng)用程序異常結(jié)束應(yīng)用程序異常結(jié)束);System.exit(b);運(yùn)行結(jié)果運(yùn)行結(jié)果:運(yùn)行:java ProgramExit 0或java ProgramExit 1結(jié)果是“程序正常退出”或“程序異常退出”2、Java語言核心類庫語言核心類庫v 例例6-14:數(shù)組復(fù)制:數(shù)組復(fù)制(6-14.txt)class ArrayCopy /聲明定義初始化數(shù)組聲明定義初始化數(shù)組static byte a = 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 ;static byte b = new bytea.length;/聲明定義數(shù)組,大小等于聲明定義數(shù)組,

36、大小等于a的長度的長度public static void main(String args) System.out.println(a = + new String(a);System.arraycopy(a, 0, b, 0, a.length);/調(diào)用復(fù)制數(shù)組的方法調(diào)用復(fù)制數(shù)組的方法System.out.println(b = + new String(b); 運(yùn)行結(jié)果運(yùn)行結(jié)果:a=ABCDEFGHIJb=ABCDEFGHIJ2、Java語言核心類庫語言核心類庫v 例例6-15:獲取計(jì)算機(jī)系統(tǒng)的相關(guān)信息例:獲取計(jì)算機(jī)系統(tǒng)的相關(guān)信息例(6-15txt) class DisplayPrope

37、rty public static void main(String args) /以下是調(diào)用上面的方法以下是調(diào)用上面的方法getProperty(),獲取相關(guān)的屬性,獲取相關(guān)的屬性System.out.println(System.getProperty(java.version);System.out.println(System.getProperty(file.separator);System.out.println(System.getProperty(java.vm.version);System.out.println(System.getProperty(os.version

38、);System.out.println(System.getProperty();System.out.println(System.getProperty(java.class.path);System.out.println(System.getProperty(java.vendor);2、Java語言核心類庫語言核心類庫v 例例6-16:設(shè)置系統(tǒng)的相關(guān)屬性:設(shè)置系統(tǒng)的相關(guān)屬性(6-16.txt) public class SetSP public static void main(String args) String strProperty = System.getP

39、roperty( java.io.tmpdir );System.out.println(原來的臨時(shí)文件存儲(chǔ)目錄名稱:原來的臨時(shí)文件存儲(chǔ)目錄名稱: + strProperty );System.out.println(將臨時(shí)文件目錄設(shè)置為將臨時(shí)文件目錄設(shè)置為C:/Tmp);String oldProperty = System.setProperty(java.io.tmpdir, C:/Tmp );strProperty = System.getProperty(java.io.tmpdir);System.out.println(設(shè)置后的臨時(shí)文件存儲(chǔ)目錄名稱:設(shè)置后的臨時(shí)文件存儲(chǔ)目錄名稱:

40、 + strProperty );運(yùn)行結(jié)果運(yùn)行結(jié)果:原來的臨時(shí)文件存儲(chǔ)目錄名稱:D:DOCUME1cyxLOCALS1Temp將臨時(shí)文件目錄設(shè)置為C:/Tmp設(shè)置后的臨時(shí)文件存儲(chǔ)目錄名稱:C:/Tmp 2、Java語言核心類庫語言核心類庫4. Runtime類類Runtime類封裝了運(yùn)行時(shí)環(huán)境。例6-17:測試計(jì)算機(jī)的系統(tǒng)內(nèi)存,并執(zhí)行記事本程序。(6-17.txt)5. 基本數(shù)據(jù)類型(包裝)類基本數(shù)據(jù)類型(包裝)類數(shù)據(jù)類型類對(duì)應(yīng)相應(yīng)的基本數(shù)據(jù)類型,類名與數(shù)據(jù)類型的名字相似,但第一個(gè)字母需大寫。包裝類名包裝類名 數(shù)據(jù)類型數(shù)據(jù)類型Boolean booleanCharacter charDoubl

41、e doubleInteger intLong longFloat floatBytebyte(1)Integer類例例6.18:輸出整數(shù)的二、八、十六進(jìn)制數(shù)表示。 (6-18.txt)(2)基本數(shù)據(jù)類型和字符串的相互轉(zhuǎn)換6. Math類類提供用于數(shù)學(xué)運(yùn)算的標(biāo)準(zhǔn)函數(shù)及常數(shù),它們都是static型的,故在使用時(shí)直接用類名作前綴,不需要?jiǎng)?chuàng)建Math類的對(duì)象。2、Java語言核心類庫語言核心類庫v 例例6-17:測試計(jì)算機(jī)的系統(tǒng)內(nèi)存,并執(zhí)行記事本程序。:測試計(jì)算機(jī)的系統(tǒng)內(nèi)存,并執(zhí)行記事本程序。(6-17.txt)class GetMemorypublic static void main(Strin

42、g args) Runtime rt = Runtime.getRuntime(); long mem1, mem2;Integer someints = new Integer100;System.out.println(總內(nèi)存總內(nèi)存: +rt.totalMemory();/總內(nèi)存總內(nèi)存mem1 = rt.freeMemory(); /可用內(nèi)存可用內(nèi)存System.out.println(可用內(nèi)存可用內(nèi)存: + mem1);rt.gc(); /內(nèi)存回收內(nèi)存回收mem1 = rt.freeMemory();System.out.println(可用內(nèi)存可用內(nèi)存: + mem1); /可用內(nèi)存可

43、用內(nèi)存 for(int i=0; i100; i+)/占用內(nèi)存占用內(nèi)存someintsi = new Integer(i); mem2 = rt.freeMemory();System.out.println(可用內(nèi)存可用內(nèi)存: + mem2); /可用內(nèi)存可用內(nèi)存 System.out.println(使用的內(nèi)存使用的內(nèi)存: + (mem1-mem2); /用的內(nèi)存用的內(nèi)存 / discard Integers2、Java語言核心類庫語言核心類庫for(int i=0; i100; i+) someintsi = null;rt.gc(); /釋放內(nèi)存釋放內(nèi)存 mem2 = rt.freeM

44、emory();System.out.println(可用內(nèi)存可用內(nèi)存 : + mem2); /可用內(nèi)存可用內(nèi)存/調(diào)用記事本程序調(diào)用記事本程序rt.exec(notepad);System.out.println(Error executing notepad.);運(yùn)行結(jié)果運(yùn)行結(jié)果:2、Java語言核心類庫語言核心類庫v 例例6.18:輸出整數(shù)的二、八、十六進(jìn)制數(shù)表示。:輸出整數(shù)的二、八、十六進(jìn)制數(shù)表示。 (6-18.txt)public class IntegerChange public static void main(String args) String nm=new String(

45、445); int n=Integer.parseInt(nm); System.out.println(十進(jìn)制表示:十進(jìn)制表示:+n); System.out.println(二進(jìn)制表示:二進(jìn)制表示:+Integer.toBinaryString(n); System.out.println(八進(jìn)制表示:八進(jìn)制表示:+Integer.toOctalString(n); System.out.println(十六進(jìn)制表示:十六進(jìn)制表示:+Integer.toHexString(n); 運(yùn)行結(jié)果運(yùn)行結(jié)果:十進(jìn)制表示:十進(jìn)制表示:445二進(jìn)制表示:二進(jìn)制表示:110111101八進(jìn)制表示:八進(jìn)制表

46、示:675十六進(jìn)制表示:十六進(jìn)制表示:1bd四、四、 JavaJava語言基礎(chǔ)類庫語言基礎(chǔ)類庫 3、實(shí)用類庫、實(shí)用類庫java.util java 的的utility類庫是類庫是Java核心包的一部分,即核心包的一部分,即java.util包。該包。該包中有很多實(shí)用的類包中有很多實(shí)用的類1. 日期類日期類Date 日期類Date用來操作系統(tǒng)日期、時(shí)間,如天數(shù)計(jì)算、日期比較等。 例6-19:輸出時(shí)間和日期(6-19.txt)2. 日歷類日歷類Calendar Calendar類是抽象類,故不能用new創(chuàng)建對(duì)象,但可使用其getInstance()方法得到默認(rèn)時(shí)區(qū)的一個(gè)對(duì)象。 例6-20:使用日歷

47、類顯示日期時(shí)間和設(shè)置日期時(shí)間。 (6-20.txt)3. 標(biāo)準(zhǔn)日歷時(shí)鐘類標(biāo)準(zhǔn)日歷時(shí)鐘類GregorianCalendar GregorianCalendar是一個(gè)標(biāo)準(zhǔn)的日歷類,其對(duì)象也就是Calendar類的getInstance()方法返回的用默認(rèn)的地區(qū)、時(shí)區(qū)表示的當(dāng)前日期和時(shí)間的對(duì)象。 例6-21:顯示當(dāng)前的的日期和時(shí)間(6-21.txt)4. 隨機(jī)類隨機(jī)類Random Random類是偽隨機(jī)數(shù)產(chǎn)生類。使用相同的初始化值(又稱種子數(shù))生成一個(gè)Random類的對(duì)象時(shí),可獲得相同的一組隨機(jī)數(shù)。使用不同的種子數(shù)則可產(chǎn)生不同的隨機(jī)數(shù)。3、實(shí)用類庫、實(shí)用類庫java.utilv 例例6-19:輸出時(shí)

48、間和日期:輸出時(shí)間和日期(6-19.txt)import java.util.Date;class CurrentDatepublic static void main(String args)Date now = new Date();/創(chuàng)建日期對(duì)象創(chuàng)建日期對(duì)象System.out.println(現(xiàn)在是:現(xiàn)在是:);/顯示當(dāng)前日期和時(shí)間顯示當(dāng)前日期和時(shí)間System.out.print(1900 + now.getYear()+年年);/取年取年System.out.print(now.getMonth()+月月);/月月System.out.print(now.getDay()+日日);

49、/日日System.out.print(now.getHours()+時(shí)時(shí));/System.out.print(now.getMinutes()+分分);System.out.println(now.getSeconds()+秒秒);System.out.println(現(xiàn)在是:現(xiàn)在是:+now);/用用toString()方法顯示方法顯示long msec = now.getTime();/顯示毫秒數(shù),從顯示毫秒數(shù),從January 1, 1970 GMT System.out.println(從從Jan. 1, 1970 GMT到現(xiàn)在的毫秒數(shù)到現(xiàn)在的毫秒數(shù) = + msec);3、實(shí)用類

50、庫、實(shí)用類庫java.utilv 例例6-20:使用日歷類顯示日期時(shí)間和設(shè)置日期時(shí)間。:使用日歷類顯示日期時(shí)間和設(shè)置日期時(shí)間。 (6-20.txt)import java.util.Calendar;class ACalendarpublic static void main(String args) String months = /初始化數(shù)組初始化數(shù)組 Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec; Calendar aCalendar = Calendar.getInstance();/用默認(rèn)時(shí)區(qū)得到對(duì)象用默認(rèn)時(shí)區(qū)得

51、到對(duì)象 System.out.print(Date: );/ 顯示當(dāng)前日期顯示當(dāng)前日期 System.out.print(monthsaCalendar.get(Calendar.MONTH); /使用常數(shù)使用常數(shù) System.out.print( + aCalendar.get(Calendar.DATE) + ); System.out.println(aCalendar.get(Calendar.YEAR); System.out.print(Time: );/顯示和時(shí)間顯示和時(shí)間 System.out.print(aCalendar.get(Calendar.HOUR) + :);/

52、打印時(shí)間打印時(shí)間 System.out.print(aCalendar.get(Calendar.MINUTE) + :); System.out.println(aCalendar.get(Calendar.SECOND); aCalendar.set(Calendar.HOUR, 10); / 設(shè)置時(shí)間設(shè)置時(shí)間 aCalendar.set(Calendar.MINUTE, 29); aCalendar.set(Calendar.SECOND, 22);System.out.print(Updated time: );/顯示設(shè)置后的時(shí)間顯示設(shè)置后的時(shí)間 System.out.print(aC

53、alendar.get(Calendar.HOUR) + :);/打印時(shí)分秒打印時(shí)分秒 System.out.print(aCalendar.get(Calendar.MINUTE) + :); System.out.println(aCalendar.get(Calendar.SECOND); 3、實(shí)用類庫、實(shí)用類庫java.utilv 例例6-21:顯示當(dāng)前的的日期和時(shí)間:顯示當(dāng)前的的日期和時(shí)間(6-21.txt)import java.awt.*;import java.util.GregorianCalendar; public class Gregorian extends Fram

54、e public static void main(String args) Gregorian gr = new Gregorian();/ 創(chuàng)建框架對(duì)象創(chuàng)建框架對(duì)象TextArea ta = new TextArea();/ 文本區(qū)域?qū)ο笪谋緟^(qū)域?qū)ο驡regorianCalendar gc = new GregorianCalendar();/ 日歷時(shí)鐘日歷時(shí)鐘ta.append(Year: + gc.get(GregorianCalendar.YEAR) + n);/ 年年ta.append(Month: + gc.get(GregorianCalendar.MONTH) + n);/

55、月月ta.append(Day: + gc.get(GregorianCalendar.DATE) + n);/ 日日ta.append(Hour: + gc.get(GregorianCalendar.HOUR) + n);/ 時(shí)時(shí)ta.append(Minute: + gc.get(GregorianCalendar.MINUTE) + n);/ 分分ta.append(Second: + gc.get(GregorianCalendar.SECOND) + n);/ 秒秒gr.add(ta, BorderLayout.CENTER);/ 文本區(qū)域加入到框架中心,用邊界布局文本區(qū)域加入到框

56、架中心,用邊界布局gr.setSize(300, 200);gr.setVisible(true);運(yùn)行結(jié)果運(yùn)行結(jié)果:五、五、 實(shí)例學(xué)習(xí)實(shí)例學(xué)習(xí)五、五、 實(shí)例學(xué)習(xí)實(shí)例學(xué)習(xí)v 實(shí)例學(xué)習(xí)實(shí)例學(xué)習(xí)1:找出距離最近的點(diǎn)對(duì):找出距離最近的點(diǎn)對(duì)假設(shè)有一個(gè)集合的點(diǎn),找出最接近的點(diǎn)對(duì)問題就是找到兩個(gè)點(diǎn),它們到彼此的距離最近。例如:在圖6-5中,點(diǎn)(1,1)和(2,0.5)是彼此之間距離最近的一對(duì)點(diǎn)。解決這個(gè)問題的方法有好幾種。一種直觀的方法就是計(jì)算所有點(diǎn)對(duì)之間的距離,并且找出最短的距離。(6-實(shí)例學(xué)習(xí)實(shí)例學(xué)習(xí)-1.txt)6-實(shí)例學(xué)習(xí)實(shí)例學(xué)習(xí)-1.txtimport java.util.Scanner; pu

57、blic class FindNearestPoints public static void main(String args) Scanner input = new Scanner(System.in);System.out.print(Enter the number of points: );int numberOfPoints = input.nextInt(); / Create an array to store pointsdouble points = new doublenumberOfPoints2;System.out.print(Enter + numberOfPo

58、ints + points: );for (int i = 0; i points.length; i+) pointsi0 = input.nextDouble();pointsi1 = input.nextDouble(); / p1 and p2 are the indices in the points arrayint p1 = 0, p2 = 1; / Initial two pointsdouble shortestDistance = distance(pointsp10, pointsp11,pointsp20, pointsp21); / Initialize shorte

59、stDistance 演示示例:演示示例:找出距離最近的點(diǎn)對(duì)找出距離最近的點(diǎn)對(duì)6-實(shí)例學(xué)習(xí)實(shí)例學(xué)習(xí)-1.txt/ Compute distance for every two pointsfor (int i = 0; i points.length; i+) for (int j = i + 1; j distance) p1 = i; / Update p1p2 = j; / Update p2shortestDistance = distance; / Update shortestDistance / Display resultSystem.out.println(The close

60、st two points are + ( + pointsp10+ , + pointsp11 + ) and ( + pointsp20 + , + pointsp21 + ); /* Compute the distance between two points (x1, y1) and (x2, y2) */ public static double distance(double x1, double y1, double x2, double y2) return Math.sqrt(x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);6-實(shí)例

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論