




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5章 數組與字符串學習目標掌握一維數組的聲明、分配空間的方法,熟練使用一維數組解決實際問題掌握二維數組的聲明、分配空間和使用方法,熟悉二維數組輸入/輸出方法掌握字符串常量對象的創建和使用方法掌握字符串的一些常用方法,并能熟練運用這些方法解決相關問題理解String類和StringBuffer類的區別,并能進行實際應用重點難點一維數組的實際應用String類和StringBuffer類的區別及使用5.1典型案例【案例描述】使用Eclipse編寫程序,從控制臺輸入10個學生Java課程的成績,計算并輸出這10個學生的平均成績及最高分與最低分,運行結果如下圖所示。【運行結果】5.2一維數組
數組是一種構造類型。數組中的每個元素都具有相同的數據類型,且可以用數組名和下標來唯一地確定。數組是有序數據的集合。和其他變量一樣,數組必須先聲明定義,然后賦值,最后再使用。5.2.1一維數組的聲明一維數組聲明的一般格式如下:數據類型數組名[];或
數據類型[]數組名;數據類型說明數組元素的類型,可以是Java中任意的數據類型。數組名是一個標識符,應遵照標識符的命名規則。
例如:int[]a; //聲明一個整型的一維數組a若數組的類型一樣,則可以一次定義多個數組。
例如:int[]x,y,z;Java語言在對數組進行聲明時,并不會為數組分配存儲空間。因此在對數組進行聲明時,是不允許指明數組長度的,而且聲明后的數組必須通過分配存儲空間來創建數組對象后,才可以訪問數組中的元素。5.2.2一維數組的初始化一般情況下,使用new運算符定義數組大小,格式如下:
數組名=new數據類型[size];size指數組的長度。
例如:intarray1[]; //聲明一個整型數組array1=newint[5]; //定義數組可以存放5個整型元素
此時,整型數組array1的長度為5,即包含5個整型數組元素:array1[0]、array1[1]、array1[2]、array1[3]、array1[4]。每一個元素都可以存放一個整型的數據,相當于5個整型變量。當用new關鍵字為一個數組分配內存空間后,可以為每個數組元素賦值,例如:array1[0]=1;//數組下標從0開始array1[1]=2;array1[2]=3;array1[3]=4;array1[4]=5;通常也可以采用如下方式為數組元素賦初值并由初值的個數確定數組的大小。intarray1[]={1,2,3,4,5};
上述語句聲明并創建了數組array1,并且為數組中的每個元素賦值,使得array1[0]=1,array1[1]=2,array1[2]=3,array1[3]=4,array1[4]=5。系統將根據所給初值的個數計算出數組的長度并分配相應的存儲空間。5.2.3訪問一維數組數組元素的使用
為數組分配好內存空間后,就可以像普通數據類型的變量一樣在程序中使用數組元素,即可以在任何允許使用變量的地方使用數組元素。數組元素的訪問方式為:
數組名[下標];下標可以為整型常量或表達式,下標值從0開始。數組是作為對象處理的,它具有長度(length)屬性,用于指明數組中包含的元素個數。因此數組的下標從0開始到length-1結束。如果在引用數組元素時,下標超出了此范圍,系統將產生數組下標越界異常(ArrayIndexOutOfBoundsException)。5.2.3訪問一維數組
數組的使用---當數組創建后,數組名就存儲了數組存儲空間的起始地址,也可以使用該數組名給其他同類數組名賦值,這樣使得多個數組共享一組內存空間和數據。5.3多維數組
在Java語言中,多維數組是建立在一維數組基礎之上的,以二維數組為例,可以把二維數組的每一行看作是一個一維數組,因此可以把二維數組看作是以一維數組為元素的數組。同樣也可以把三維數組看作二維數組的數組,依此類推。在通常的應用中一維、二維數組最為常見,多維數組只應用于特殊的場合。5.3.1二維數組的聲明聲明二維數組的一般格式如下:數據類型
數組名[][];或
數據類型[][]數組名;數據類型可以是Java中的任意數據類型。例如:
int[][]a;//聲明一個整型的二維數組adouble[][]b;//聲明一個實型的二維數組b注意:和一維數組類似,二維數組的聲明只是說明了二維數組元素的數據類型,并沒有為其分配存儲空間。5.3.2二維數組的初始化二維數組初始化也是為數組元素指定初始值,同時為數組分配相應的內存空間。可以采用如下的方式。先聲明后定義最后再賦值
例如:int[][]matrix; //聲明整型二維數組matrixmatrix=newint[3][3]; //定義matrix包含3×3=9個元素matrix[0][0]=1; //為第1個元素賦值matrix[0][1]=2; //為第2個元素賦值……matrix[2][2]=9; //為第9個元素賦值直接定義大小后賦值
例如:int[][]matrix=newint[3][3];matrix[0][0]=1;//為第1個元素賦值
……matrix[2][2]=9;//為第9個元素賦值由初始化值的個數確定數組的大小
在元素個數較少并且初值已確定時通常采用如下方式賦值:int[][]matrix={{1,2,3},{4,5,6},{7,8,9}};//由初值個數確定3行3列5.3.3訪問二維數組
二維數組在分配好內存空間后,可以像一維數組一樣使用。每個數組元素的識別方式都是:
數組名[下標1][下標2];
其中,下標1和下標2與一維數組的下標要求是一樣的。5.4數組的應用排序數組——冒泡排序搜索數組——折半查找
5.4.1排序數組
將下面的數列排序:54382。將相鄰兩個數進行比較,不斷地將小數調到前面。第1趟排序后結果為:43528。可以看出,第1趟排序后最大值已經沉底,得到我們預想的結果,它將不會參與下一趟排序。第2趟排序后結果為:34258。依此繼續,共進行4趟排序,就可以完成對5個數的冒泡排序。5.4.2搜索數組
折半查找是一種在有序數組中查找某一特定元素的搜索算法。搜索過程從數組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結束;如果某一特定元素大于或者小于中間元素,則在數組大于或小于中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較。如果在某一步驟數組為空,則代表找不到。這種搜索算法每一次比較都使搜索范圍縮小一半。5.5字符串的應用字符串是字符的序列,字符串中可以包含字母、數字和其他各種特殊字符,如+、?、*、/等。在Java語言中字符串是被當作對象來處理的,它提供了一系列的字符串操作方法,使字符串的處理更加簡單和規范。
Java語言的java.lang包中封裝了final類String和StringBuffer。其中String類的對象是字符串常量,建立后不能改變其值。而StringBuffer類的對象類似于一個字符緩沖區,建立后其值可以修改。5.5.1字符數組
字符數組中的每個元素都是char類型的數據,它的創建方法與一般數組相似。字符數組的聲明和創建
例如:char[]a=newchar[8];
該語句聲明并創建了字符數組a,數組中可以存儲8個字符。字符數組可以被初始化
例如:char[]a={'g','i','r','l'};
其中,a是一個字符數組,共有4個元素,a[0]為'g',a[1]為'i',a[2]為'r',a[3]為'l'。也可以通過for語句給字符數組循環賦值
例如:char[]a=newchar[50];for(inti=0;i<26;i++);a[i]='A'+i;
上述循環語句執行后,數組a中存放了26個大寫英文字母。5.5.1字符數組字符串不是字符數組,但是可以轉換為字符數組,反之亦然。字符串和字符數組之間的轉換有以下兩種方式。(1)字符串轉換為字符數組——toCharArray()方法。例如:將字符串“school”中的字符轉換為數組a中的數組元素。char[]a="school".toCharArray();(2)字符數組轉換為字符串——String(char[])構造方法或者valueOf(char[])方法。例如:Stringstr=newString(newchar[]{'j','a','v','a'});Stringstr=String.valueOf(newchar[]{'j','a','v','a'});5.5.2String類的使用在Java中,每個字符串常量對應一個String類的對象,String類是字符串常量類,它用于生成字符串對象,String對象建立后不能修改。String類提供了如下一些常用的構造方法用來構造字符串對象:
(1)String():構造一個空的字符串對象。
(2)String(charchars[]):以字符數組chars的內容構造一個字符串對象。
(3)String(charchars[],intstartIndex,intnumChars):以字符數組chars中從startIndex位置開始的numChars個字符構造一個字符串對象。5.5.2String類的使用String類也提供了眾多的方法用于操作字符串,以下列出一些常用的方法:(1)publicintlength():返回字符串的字符個數。(2)publiccharcharAt(intindex):返回字符串中index位置上的字符,其中index值的范圍是0~length-1。(3)publicintindexOf(charch):返回字符ch在字符串中第一次出現的位置。(4)publicintlastIndexOf(charch):返回字符ch在字符串中最后一次出現的位置。(5)publicintindexOf(Stringstr):返回子串str在字符串中第一次出現的位置。(6)publicintlastIndexOf(Stringstr):返回子串str在字符串中最后一次出現的位置。
(7)publicStringsubstring(intbeginIndex):返回字符串中從beginIndex位置開始的子串。5.5.2String類的使用String類也提供了眾多的方法用于操作字符串,以下列出一些常用的方法:(8)publicStringsubstring(intbeginIndex,intendIndex):返回字符串中從beginIndex位置開始到endIndex位置(不包括該位置)結束的子串。(9)publicStringcontact(Stringstr):用來將當前字符串與給定字符串str連接起來。(10)publicStringreplace(charoldChar,charnewChar):用來把字符串中所有由oldChar指定的字符替換成由newChar指定的字符以生成新字符串。(11)publicStringtoLowerCase():把字符串中所有的字符變成小寫且返回新字符串。(12)publicStringtoUpperCase():把字符串中所有的字符變成大寫且返回新字符串。(13)publicStringtrim():去掉字符串中前導空格和拖尾空格且返回新字符串。5.5.3StringBuffer類的使用在字符串處理過程中,String類生成的對象是不變的,StringBuffer類對字符串的運算操作是在源字符串本身上進行的,運算操作之后源字符串的值發生了變化。StringBuffer類采用緩沖區存放字符串的方式提供了對字符串內容進行動態修改的功能,即可以在字符串中添加、插入和替換字符。StringBuffer類被放置在java.lang包中。StringBuffer類常用的構造方法如下:(1)StringBuffer():用于創建一個空的StringBuffer類對象。(2)StringBuffer(intlength):以length指定的長度創建StringBuffer類對象。(3)StringBuffer(Stringstr):用指定的字符串初始化創建StringBuffer類對象。與String類不同,必須使用StringBuffer類的構造方法創建對象,不能直接定義StringBuffer類型的變量。5.5.3StringBuffer類的使用StringBuffer類對象的常用方法(1)插入字符串方法。insert()方法是一個重載方法,用于在字符串緩沖區中指定的位置插入給定的字符串。它有如下形式:1)insert(intindex,類型參量名):可以在字符串緩沖區中index指定的位置處插入各種數據類型的數據(如int、double、boolean、char、float、long、String、Object等)。2)insert(intindex,char[]str,intoffset,intlen):可以在字符串緩沖區中index指定的位置處插入字符數組中從下標offset處開始的len個字符。(2)刪除字符串方法。StringBuffer類提供了如下常用的刪除方法:1)delete(intstart,intend):用于刪除字符串緩沖區中位置在start~end之間的字符。2)deleteCharAt(intindex):用于刪除字符串緩沖區中index位置處的字符。5.5.3StringBuffer類的使用StringBuffer類對象的常用方法(3)字符串添加方法。append()方法是一個重載方法,用于將一個字符串添加到一個字符串緩沖區的后面,如果添加字符串的長度超過字符串緩沖區的容量,則字符串緩沖區將自動擴充。它有如下形式:1)append(數據類型參量名):可以向字符串緩沖區添加各種數據類型的數據(如int、double、boolean、char、floa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代簽合伙人合同協議書
- 工程安裝安全合同協議書
- 京東商城電子合同協議書
- 外墻竹架搭設合同協議書
- 養老創業計劃書范文大全
- 融媒體視野下傳統媒體轉型路徑研究
- 互聯網物流物流行業的新發展
- 2025年煤氣項目安全調研評估報告
- syb餐飲創業計劃書模板
- 2025秋五年級上冊語文(統編版)-【6 將相和】作業課件
- 醫療廢物管理PPT演示課件
- 裝車前后車載供氫系統氣密性檢測報告編寫格式
- 物流托運單模板
- 高等代數課件(北大版)第九章 歐式空間§9.1.1
- 陪診師資格考試復習題庫寶典(含答案)
- 宮腔粘連臨床路徑
- 2023年全國統一高考歷史試卷(新課標)(含解析)
- 國開(中央電大)本科《中國當代文學專題》網上形考(任務二至六)試題及答案
- 2023學年完整公開課版破十法
- (44)-7.多毛細胞白血病
- 榆次區王湖村城中村改造安置區項目(榆次城建?王湖村)環評報告
評論
0/150
提交評論