JAVA應(yīng)用基礎(chǔ)第五章數(shù)組字符串和向量.ppt_第1頁
JAVA應(yīng)用基礎(chǔ)第五章數(shù)組字符串和向量.ppt_第2頁
JAVA應(yīng)用基礎(chǔ)第五章數(shù)組字符串和向量.ppt_第3頁
JAVA應(yīng)用基礎(chǔ)第五章數(shù)組字符串和向量.ppt_第4頁
JAVA應(yīng)用基礎(chǔ)第五章數(shù)組字符串和向量.ppt_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5章 數(shù)組、字符串、向量,2,主要內(nèi)容,5.1 數(shù)組 一維數(shù)組 二維數(shù)組 5.2 字符串 字符串常量 String類 StringBuffer類 StringTokenizer類 5.3 向量,3,5.1 數(shù)組,數(shù)組是有序數(shù)據(jù)的集合,是由數(shù)目固定、相同類型的元素組成的,用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)來唯一地確定數(shù)組中的元素。Java將數(shù)組作為對象來處理,數(shù)組是一種引用類型,從java.lang.Object繼承而來,故Object類中的所有方法均可用。,4,5.1.1 一維數(shù)組,具有一個(gè)下標(biāo)的數(shù)組稱為一維數(shù)組。 1. 一維數(shù)組的聲明 其聲明格式如下: 這里只有數(shù)組變量的定義,沒有為數(shù)組元素分配空間,只為數(shù)組的引用分配了空間,array1和array2目前為空的引用。,方式一:數(shù)據(jù)類型 數(shù)組名; 方式二:數(shù)據(jù)類型 數(shù)組名; 例如: int array1; double array2;,5,2. 一維數(shù)組的初始化,一維數(shù)組定義之后,必須經(jīng)過初始化才可以引用,數(shù)組經(jīng)過初始化后,其長度(即可存放的元素個(gè)數(shù))就不可再改變。數(shù)組的初始化分為靜態(tài)初始化和動態(tài)初始化兩種: (1) 靜態(tài)初始化:在定義數(shù)組的同時(shí)對數(shù)組元素進(jìn)行初始化 int intArray=1,2,3,4; / 定義了一個(gè)含有4個(gè)元素的int型數(shù)組 注意: 在給數(shù)組賦初值時(shí),不能同時(shí)指定數(shù)組的大小,Java會根據(jù)初值的多少自動計(jì)算數(shù)組的大小。 靜態(tài)初始化必須使用上述一條語句完成 當(dāng)創(chuàng)建數(shù)組后,如果沒有初始化,系統(tǒng)會根據(jù)數(shù)組的不同數(shù)據(jù)類型,指定不同的缺省值。,6,(2) 動態(tài)初始化:用運(yùn)算符new為數(shù)組分配空間 對于簡單類型的數(shù)組,其格式如下: 數(shù)據(jù)類型 數(shù)組名=new 數(shù)據(jù)類型arraySize; 數(shù)據(jù)類型 數(shù)組名=new 數(shù)據(jù)類型arraySize; 其中arraySize表示數(shù)組長度,通常為整型常量,用以指明數(shù)組元素的個(gè)數(shù)。 或先聲明數(shù)組,再對數(shù)組進(jìn)行初始化: 數(shù)據(jù)類型 數(shù)組名; 數(shù)組名=new 數(shù)據(jù)類型arraySize;,7, 對于復(fù)合(引用)類型(類、接口、數(shù)組)的數(shù)組,需要經(jīng)過以下兩步進(jìn)行內(nèi)存空間的分配。 首先:為數(shù)組分配空間,每一個(gè)數(shù)組元素都是一個(gè)引用,格式為: 數(shù)組名=new 數(shù)據(jù)類型arraySize; 然后為每一個(gè)數(shù)組元素分配所引用的對象空間,格式為: 數(shù)組名i=new 數(shù)組元素對象的構(gòu)造函數(shù); 例如: String stringArray; /定義一個(gè)String類型的數(shù)組 stringArray = new String3; 上述語句給數(shù)組stringArray分配3個(gè)引用空間,初始化每個(gè)引用值為null stringArray0=new String(“how“); stringArray1=new String(“are“); stringArray2=new String(“you”);(如圖示),8,9,3. 一維數(shù)組元素的的引用,當(dāng)數(shù)組初始化后就可通過數(shù)組名與下標(biāo)來引用數(shù)組中的每一個(gè)元素。一維數(shù)組元素的引用格式如下: 數(shù)組名int類型的表達(dá)式 注意: (1) 與C/C+不同的是,Java對數(shù)組元素的下標(biāo)要進(jìn)行越界檢查,以保證訪問的安全性。若數(shù)組下標(biāo)越界,Java會拋出java.lang.ArrayIndexOutOfBoundsException異常。 (2) length是屬于數(shù)組對象的數(shù)據(jù)域而不是方法。因此,使用length()會出錯(cuò),length只有在數(shù)組創(chuàng)建后才能訪問。創(chuàng)建前,數(shù)組的引用是null。,10,4. 數(shù)組的復(fù)制,一個(gè)簡單的賦值語句并不能完成數(shù)組復(fù)制工作,在Java中,可以使用賦值語句復(fù)制基本類型的變量卻不能復(fù)制對象,如數(shù)組。將一個(gè)對象賦值給另一個(gè)對象,只會使兩個(gè)對象指向相同的內(nèi)存地址。 賦值數(shù)組有以下三種方法: (1) 用循環(huán)語句復(fù)制數(shù)組的每一個(gè)元素,如 for(int i=0;isourceArray.length;i+) targetArrayi=sourceArrayi; (2) 使用Object的clone方法,如: int targetArray = (int)sourceArray.clone(); (3) 使用System類中的靜態(tài)方法arraycopy,arraycopy的語法如下: arraycopy(sourceArray,srcpos,targetArray,tarpos,length);,11,5. 程序舉例,【例5.2】用數(shù)組求解Fibonacci數(shù)列的前20項(xiàng),即使用數(shù)組下標(biāo)表達(dá)式求解數(shù)學(xué)上的迭代問題。 【例5.3】用冒泡法和選擇法兩種方法對N個(gè)數(shù)排序(升序)。,12,圖5.2 對5個(gè)數(shù)據(jù)進(jìn)行冒泡法排序,13,練習(xí):,讀入6個(gè)整數(shù),找出其中最大的,并且統(tǒng)計(jì)它的出現(xiàn)次數(shù).,14,5.1.2 二維數(shù)組,如果數(shù)組的元素類型也是數(shù)組,這種結(jié)構(gòu)就是多維數(shù)組。多維數(shù)組的維數(shù)沒有限制,可以為二維、三維等。最常用的二維數(shù)組是一個(gè)特殊的一維數(shù)組,它的每個(gè)元素都是一個(gè)一維數(shù)組,又叫做數(shù)組的數(shù)組。表示矩陣或表格需要使用二維數(shù)組。 1. 二維數(shù)組的聲明,數(shù)據(jù)類型 數(shù)組名; 或 數(shù)據(jù)類型 數(shù)組名; 例如: int arr; 或 int arr;,15,2. 二維數(shù)組的初始化,二維數(shù)組的初始化也分為靜態(tài)初始化和動態(tài)初始化兩種。 (1) 靜態(tài)初始化:在定義數(shù)組的同時(shí)為數(shù)組分配空間,例如: int intArray=1,2,2,3,3,4; (2) 動態(tài)初始化:對高維數(shù)組來說,動態(tài)分配內(nèi)存空間有下面兩種方法: 直接為每一維分配空間,格式如下: (舉例說明) 數(shù)據(jù)類型 數(shù)組名=new數(shù)據(jù)類型數(shù)組長度; 或 數(shù)據(jù)類型 數(shù)組名=new 數(shù)據(jù)類型數(shù)組長度數(shù)組長度;,16,例如: int intArray1=new int4; int intArray2=new int43; /*定義了一個(gè)二維數(shù)組intArray2,分配了12個(gè)存儲單元,類似一個(gè)4行3列的矩陣。*/ 需要注意的是不指定行數(shù)而指定列數(shù)是錯(cuò)誤的。例如,下面的初始化是錯(cuò)誤的。 int arr=new int4; / 錯(cuò)誤,17, 從最高維開始(而且必須從最高維開始),分別為每一維分配空間。在這種情況下,第2維的每一個(gè)數(shù)組的長度可以不同,是一個(gè)不規(guī)則的二維數(shù)組。不規(guī)則的數(shù)組可以節(jié)省存儲空間。 例如: String s =new String2 ; s0=new String2; s1=new String3; s00=new String(“Good“); s01=new String(“ Luck“); s10=new String(“ to“); s11=new String(“ you“); s12=new String(“!“);,18,3. 二維數(shù)組的引用,對二維數(shù)組中的每個(gè)元素,引用方式為: 數(shù)組名index1index2 其中index1和index2是數(shù)組下標(biāo),為整型常數(shù)和整型表達(dá)式,都是從0開始的。 二維數(shù)組也有l(wèi)ength屬性,可以求每一維數(shù)組的長度。對于:int x = new int34;,19,【例5.5】測定數(shù)組的長度及數(shù)組賦值。,public class twoDimensionArray public static void main(String arg) int matrix = 1, 2, 3, 4, 5, 2, 3, 4, 5, 3, 4, 5, 4, 5, 5 ; System.out.println(“the length of matrix is “+matrix.length); for (int i=0;i5;i+) System.out.println(“the length of matrix“+i+“ is “+matrixi.length); ,20,【例5.6】求二維數(shù)組中的最大數(shù)。 【例5.7】矩陣的加法和乘法運(yùn)算。,21,5.2 字符串,字符串是多個(gè)字符的序列,是編程中常用的數(shù)據(jù)類型。 在純面向?qū)ο蟮腏ava語言中,將字符串?dāng)?shù)據(jù)類型封裝為字符串類,無論是字符串常量還是字符串變量,都是用類的對象來實(shí)現(xiàn)的,在對象中封裝了一系列方法來進(jìn)行字符串處理。,22,5.2.1 字符串常量,一個(gè)字符串常量使用雙引號括住的一串字符,字符常量是用單引號括住的一個(gè)字符。一個(gè)字符串常量是一個(gè)String對象,故可以使用String類中的各種方法。 注意:若Java程序中多處出現(xiàn)字符串常量如“ABC“,則Java編譯程序只創(chuàng)建一個(gè)String對象,所有的字符串常量“ABC“將使用同一個(gè)String對象。如: String s1=“ABC“; String s2=“ABC“; String s3=new String(“ABC“); 上述三條語句創(chuàng)建了三個(gè)對象,其中s1和s2是同一個(gè)對象,而s1和s3是2個(gè)不同的對象,盡管它們所表示的字符序列相等。,23,5.2.2 String類,1. String類的構(gòu)造方法 String類中提供了多種構(gòu)造方法來創(chuàng)建String類的對象。 (1) public String(); 功能:創(chuàng)建一個(gè)字符串對象,其字符串值為空。 (2) public String(String value); 功能:用字符串對象value創(chuàng)建一個(gè)新的字符串對象。 (3) public String(char value); 用字符數(shù)組value來創(chuàng)建字符串對象。 (4) public String(char value,int offset,int count) 從字符數(shù)組value中下標(biāo)為offset的字符開始,創(chuàng)建有count個(gè)字符的字符串對象。,24,(5) public String(byte ascII) 用byte型字符串?dāng)?shù)組ascII,按缺省的字符編碼方案創(chuàng)建字符串對象。 (6) public String(byte ascII,int offset int count) 從字節(jié)型數(shù)組ascII中下標(biāo)為offset的字符開始,按缺省的字符編碼方案創(chuàng)建count個(gè)字符的串對象。 (7) public String(StringBuffer buffer) 用緩沖字符串buffer創(chuàng)建一個(gè)字符串對象。 【例5.8】String類的構(gòu)造方法的使用。,25,2. String類的常用成員方法,創(chuàng)建一個(gè)String類的對象后,使用相應(yīng)類的成員方法對創(chuàng)建的對象進(jìn)行處理。String類的常用成員方法見表5.3。 說明: (1) 關(guān)于字符串比較的說明 不能用“=” ,而用equals()方法。 (2) 程序設(shè)計(jì)中頻繁使用字符串。 (3) 類型轉(zhuǎn)換 String類的靜態(tài)方法valueOf()實(shí)現(xiàn)簡單數(shù)據(jù)轉(zhuǎn)化為字符串 。 類Integer、Double、Float和Long中也提供了方法valueOf()把一個(gè)字符串轉(zhuǎn)化為對應(yīng)的數(shù)字對象類型 示例:參看例5.10,26,5.2.3 StringBuffer類,StringBuffer類也是java.lang.Object的子類。與String類不同,StringBuffer類是一個(gè)在操作中可以更改其內(nèi)容的字符串類。即一旦創(chuàng)建StringBuffer類的對象,在操作中可以更改和變動字符串的內(nèi)容。也就是說對于StringBuffer類的對象不僅能進(jìn)行查找和比較等操作,也可以做添加、插入、修改之類的操作。,27,1. StringBuffer類的構(gòu)造函數(shù),StringBuffer類提供了多種構(gòu)造方法來創(chuàng)建類StringBuffer的對象。 (1) public StringBuffer() 功能:創(chuàng)建一個(gè)空字符串緩沖區(qū),默認(rèn)初始長度為16個(gè)字符。 (2) public StringBuffer(int length) 功能:用length指定的初始長度創(chuàng)建一個(gè)空字符串緩沖區(qū) (3) public StringBuffer(String str) 功能:用指定的字符串str創(chuàng)建一個(gè)字符串緩沖區(qū),其長度為str的長度再加16個(gè)字符。,28,2. StringBuffer類中追加和插入新內(nèi)容,StringBuffer類提供了10個(gè)重載方法append,可以在字符串緩沖區(qū)末尾追加boolean、char、字符數(shù)組、double、float、int、long、string、Object等類型的新內(nèi)容,append方法的返回類型均為StringBuffer。 StringBuffer類還提供了9個(gè)重載方法insert,可以在字符串緩沖區(qū)中指定位置處插入char 、字符數(shù)組、double、float、int、long、boolean、string、Object等類型的新內(nèi)容。insert方法的返回類型均為StringBuffer。 【例5.11】將給定不同數(shù)據(jù)類型的內(nèi)容添加到當(dāng)前字符串后面。,29,3. StringBuffer類的常用成員方法,java.lang.StringBuffer常用成員方法參見表5.4。 【例5.12】測試字符串緩沖區(qū)的長度和容量。,30,5.2.4 StringTokenizer類,在Java類庫的java.util包中包含一個(gè)用于進(jìn)行字符串詞法分析的類StringTokenizer,目的是將對字符串進(jìn)行分解的方法進(jìn)行封裝,以簡化應(yīng)用程序設(shè)計(jì)過程中的工作量。 1StringTokenizer類的構(gòu)造方法 (1) public StringTokenizer(String str) (2) public StringTokenizer(String str,String delim) (3) public StringTokenizer(String str,String delim,boolean returnTokens),31,2StringTokenizer類的常用成員方法 (1) public int countTokens() 功能:返回字符串中的當(dāng)前單詞的數(shù)量,為整數(shù)。 (2) public boolean hasMoreTokens() 功能:若還有子串,則返回true,否則返回false。 (3) public String nextToken() 功能:返回下一個(gè)子串。 (4) public String nextToken(String delim) 功能:重置delim中的分隔符后,返回串中下一個(gè)子串。,32,3. 程序設(shè)計(jì)舉例 【例5.13】測試StringTokenizer類。,33,5.3 向量,Java中的數(shù)組只能保存固定數(shù)目的元素,且必須把所有需要

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論