《Java程序設(shè)計》課件-javacp4數(shù)組和字符串_第1頁
《Java程序設(shè)計》課件-javacp4數(shù)組和字符串_第2頁
《Java程序設(shè)計》課件-javacp4數(shù)組和字符串_第3頁
《Java程序設(shè)計》課件-javacp4數(shù)組和字符串_第4頁
《Java程序設(shè)計》課件-javacp4數(shù)組和字符串_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第四章數(shù)組和字符串

Java程序設(shè)計本章主要內(nèi)容

數(shù)組字符串小結(jié)2024/12/24李飛——計算中心2/30數(shù)組的概念數(shù)組是具有一定順序關(guān)系的若干相同類型變量的集合體,組成數(shù)組的變量稱為該數(shù)組的元素。這些元素可以是簡單類型也可以是對象。在Java中,數(shù)組屬于構(gòu)造類型。用法等同于對象。需要聲明,分配內(nèi)存空間和釋放內(nèi)存空間。分配內(nèi)存空間用new保留字完成,收回內(nèi)存空間用垃圾回收器自動回收。十二月24李飛計算中心3數(shù)組的特點一個數(shù)組中所有的元素是同一類型;數(shù)組中的元素是有順序的;數(shù)組中的一個元素通過數(shù)組名和數(shù)組下標(biāo)來確定。下標(biāo)從0開始。2024/12/24李飛——東北大學(xué)秦皇島分校計算中心4/35數(shù)組涉及的常用名詞數(shù)組名。數(shù)組名應(yīng)該符合Java語言標(biāo)識符的命名規(guī)則。數(shù)組的類型。因為數(shù)組是用來存儲相同類型的數(shù)據(jù),因此數(shù)組的類型就是其所存儲的元素的數(shù)據(jù)類型。數(shù)組的長度。數(shù)組的長度指的是數(shù)組中可以容納的元素的個數(shù),而不是數(shù)組所占用的字節(jié)數(shù)。5十二月24李飛計算中心一維數(shù)組存儲模型2024/12/24李飛——東北大學(xué)秦皇島分校計算中心6/35一維數(shù)組的聲明

一維數(shù)組聲明的格式為:

類型數(shù)組名[];或

類型[]數(shù)組名;其中類型指出了數(shù)組中各元素的數(shù)據(jù)類型,包括基本類型和構(gòu)造類型。數(shù)組名為一個標(biāo)識符?!癧]”指明了該變量是一個數(shù)組類型變量。當(dāng)[]在數(shù)組名后時僅說明一個數(shù)組;當(dāng)[]在數(shù)組名前時,后面的數(shù)組名列表中的所有標(biāo)識符都是數(shù)組。例如: inta[];等價于 int[]a;例如:inta[],b[];等價于int[]a,b;十二月24李飛計算中心7

一維數(shù)組的初始化初始化方式一直接給數(shù)組的每個元素賦上一個初始值,系統(tǒng)會自動根據(jù)所給的元素個數(shù)為數(shù)組分配一定的內(nèi)存空間,一般在數(shù)組元素比較少時使用,一般形式為:

類型數(shù)組名[]={值1,值2,……,值n};例:聲明并初始化一個長度為3的整型數(shù)組。

inta[]={1,2,3};十二月24李飛計算中心8

一維數(shù)組的初始化初始化方式二使用new操作符為一個數(shù)組分配內(nèi)存空間,然后為每個元素分別賦值,格式如下:

類型數(shù)組名[];

數(shù)組名=new類型[數(shù)組長度];或簡化為

類型數(shù)組名[]=new類型[數(shù)組長度];例:初始化一個具有10個元素的整型數(shù)組。inta[];a[]=newint[10];Inta[]=newint[10];十二月24李飛計算中心9一維數(shù)組的訪問和賦值數(shù)組引用的賦值數(shù)組本身就是一種對象,因此我們可以把一個數(shù)組整體的賦值給另外一個數(shù)組。這種情況通??梢栽趦蓚€相同類型的數(shù)組之間完成。char[]a1={'c','h','i','n','a'};char[]b1;b1=a1;數(shù)組元素的賦值數(shù)組的每個元素2024/12/24李飛——東北大學(xué)秦皇島分校計算中心10/35求最值。例4.6:給定10個數(shù),求其最大值。publicclasseg4_6{ publicstaticvoidmain(String[]args){ int[]a={3,6,4,1,7,8,34,5,32,2}; intmax=a[0]; for(inti=0;i<a.length;i++) if(max<a[i]) max=a[i]; System.out.println("最大值:"+max); }}2024/12/24李飛——東北大學(xué)秦皇島分校計算中心11/35算法:排序給定一個數(shù)組,把數(shù)組按從大到小排序。擂臺法:n各元素的數(shù)組,要排n-1輪每輪選出一個最大值放在數(shù)組的相應(yīng)位置冒泡法:n各元素從前到后兩兩比較,大的在前,小的在后,否則交換。外循環(huán)執(zhí)行i=len輪內(nèi)循環(huán)比較次數(shù)len-1十二月24李飛計算中心12/30排序例4.7:給定10個數(shù),按從小到大排序。publicclasseg4_7{ publicstaticvoidmain(String[]args){ int[]a={3,6,4,1,7,8,34,5,32,2}; inttemp; for(inti=0;i<a.length-1;i++) for(intj=i+1;j<a.length;j++) if(a[i]>a[j]){ temp=a[i]; a[i]=a[j]; a[j]=temp; } for(inti=0;i<a.length;i++) System.out.print(a[i]+""); }}2024/12/24李飛——東北大學(xué)秦皇島分校計算中心13/35冒泡法排序2024/12/24李飛——東北大學(xué)秦皇島分校計算中心14/35每執(zhí)行一輪排序操作,都把數(shù)組中的所有元素按順序兩兩比較,在比較過程中永遠(yuǎn)保證大的(或小的)在前,當(dāng)經(jīng)過數(shù)組長度-1輪比較后,數(shù)組的順序會自動排好。

假設(shè)我們有一個數(shù)組a,它包含5個元素為{3,2,7,1,6}。采用冒泡法排序的過程冒泡法排序2024/12/24李飛——東北大學(xué)秦皇島分校計算中心15/35例4.8:給定10個數(shù),按從小到大排序。publicclasseg4_71{ publicstaticvoidmain(String[]args){ int[]a={3,6,4,1,7,8,34,5,32,2}; inttemp; for(inti=0;i<a.length-1;i++) for(intj=0;j<a.length-1;j++) if(a[j]>a[j+1]){ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } for(inti=0;i<a.length;i++) System.out.print(a[i]+""); }}4.1.2二維數(shù)組和多維數(shù)組

二維數(shù)組的存儲模型2024/12/24李飛——東北大學(xué)秦皇島分校計算中心16/35二維數(shù)組

二維數(shù)組的聲明格式

類型數(shù)組名[][];

類型[][]數(shù)組名;直接為每一維分配空間,如inta[][]=newint[2][3];該語句創(chuàng)建了一個二維數(shù)組a,其較高一維含兩個元素,每個元素為由3個整數(shù)構(gòu)成的整型數(shù)組。17十二月24李飛計算中心

二維數(shù)組的創(chuàng)建(2)從最高維開始,分別為每一維分配空間,如 intb[][]=newint[2][];

//最高維含2個元素,每個元素為一個整型數(shù)組 b[0]=newint[3];

//最高維第一個元素是一個長度為3的整型數(shù)組 b[1]=newint[5];//最高維第二個元素是一個長度為5的整型數(shù)組18十二月24李飛計算中心(1)直接為每一維分配空間,如inta[][]=newint[2][3];該語句創(chuàng)建了一個二維數(shù)組a,其較高一維含兩個元素,每個元素為由3個整數(shù)構(gòu)成的整型數(shù)組。二維數(shù)組的初始化動態(tài)初始化:用new在為數(shù)組分配空間后,再單獨(dú)為每個數(shù)組元素賦值。inta[][]=newint[2][3]a[0][0]=33靜態(tài)初始化:直接對每個元素賦值,在聲明和定義數(shù)組的同事也為數(shù)組分配內(nèi)存空間。inta[][]={{2,3},{1,3},{3,4}};intarr[][]={{3,9},{4,5,3},{4,5,6,7}};//arr.length=3,arr[0].length=2,arr[1].length=3,

arr[2].length=4十二月24李飛計算中心19/30二維數(shù)組的訪問和賦值

和一維數(shù)組一樣,二維數(shù)組名稱也僅表示二維數(shù)組的存儲空間的引用,所以我們也可以通過賦值語句直接為一個二維數(shù)組指定別名。2024/12/24李飛——東北大學(xué)秦皇島分校計算中心20/35例4.9:為二維數(shù)組起別名。publicclasseg4_9{ publicstaticvoidmain(String[]args){ inta[][]={{1,2,3},{4,5},{6,7,8,9}}; int[][]b; b=a; for(inti=0;i<a.length;i++){ for(intj=0;j<a[i].length;j++) System.out.print(b[i][j]+""); System.out.println(); } }}二維數(shù)組的應(yīng)用矩陣運(yùn)算見例4.10表格處理。見例4.112024/12/24李飛——東北大學(xué)秦皇島分校計算中心21/354.2字符串字符串是一系列字符組成的序列。Java在字符處理方面主要有三個相關(guān)的類String類、Character類和StringBuffer類。String類:用于處理多個字符組成的字符串。Character類的實例是單個字符,在類中定義了一些可以用于操作和檢查單個字符數(shù)據(jù)的簡便方法。StringBuffer類用于存儲和操作由多個字符組成的可改變的數(shù)據(jù),通常應(yīng)用在字符串的輸入和輸出。2024/12/24李飛——東北大學(xué)秦皇島分校計算中心22/35Character類Character類是char數(shù)據(jù)類型的包裝類,它的對象僅包含一個字符。創(chuàng)建Character對象采用new運(yùn)算符調(diào)用其構(gòu)造方法來實現(xiàn)。Charactera=newCharacter(字符常量);2024/12/24李飛——東北大學(xué)秦皇島分校計算中心23/35Character類的方法2024/12/24李飛——東北大學(xué)秦皇島分校計算中心24/35表4.1Character類的常用成員方法方法說明charValue()求Character對象的字符值hashCode()求字符的ASCII值compareTo(CharacteranotherChar)比較Character和anotherChar的大小。相等返回0;Character對象小于anotherChar返回小于0的值;Character對象大于anotherChar返回大于0的值。equals(Objectobj)比較Character對象和obj是否相等,相等返回true。toString()把Character對象轉(zhuǎn)換為String對象。Character類的方法2024/12/24李飛——東北大學(xué)秦皇島分校計算中心25/35表4.2Character類的常用類方法方法說明isUpperCase(charch)判斷ch是否為大寫字母,是則返回true。isLowerCase(charch)判斷ch是否為小寫字母,是則返回true。toUpperCase(charch)將ch轉(zhuǎn)換為大寫,是則返回true。toLowerCase(charch)將ch轉(zhuǎn)換為小寫,是則返回true。isLetter(charch)判斷ch是否為字母,是則返回true。isDigit(charch)判斷ch是否為數(shù)字,是則返回true。isLetterOrDigit(charch)判斷ch是否為字母或數(shù)字,是則返回true。isSpaceChar(charch)判斷ch是否為Unicode空白字符。例題:2024/12/24李飛——東北大學(xué)秦皇島分校計算中心26/35例4.12比較兩個字符publicclasseg4_12{ publicstaticvoidmain(String[]args){ Charactera=newCharacter('b'); Characterb=newCharacter('B'); intdif=pareTo(b); if(dif==0) System.out.println("a等于b"); else if(a.equals(Character.toLowerCase(b.charValue()))) System.out.println("忽略大小寫的a與b字符相同"); else System.out.println("a不等于b");}}4.2.2定長字符串的操作

2024/12/24李飛——東北大學(xué)秦皇島分校計算中心27/35創(chuàng)建String對象通過new運(yùn)算符和字符串類的構(gòu)造方法創(chuàng)建字符串對象

在初始化字符串時,直接通過字符序列的集合或字符串常量創(chuàng)建字符串對象。其語句格式為String字符串對象名={字符列表};或String字符串對象名=“字符串常量”;String類的常用構(gòu)造方法

2024/12/24李飛——東北大學(xué)秦皇島分校計算中心28/35構(gòu)造方法說明String()創(chuàng)建一個空字符串String(char[]value)創(chuàng)建一個字符串,它的值是字符數(shù)組value的內(nèi)容String(char[]value,intoffset,intcount)創(chuàng)建一個字符串,它的值是字符數(shù)組value中第offset個下標(biāo)變量開始的count個字符。String(byte[]bytes)根據(jù)字節(jié)數(shù)組建立字符串,字符串內(nèi)容為字節(jié)數(shù)組每個元素對應(yīng)的ASCII碼publicString(byte[]bytes,intoffset,intlength,Charsetcharset)通過使用指定的charset字符集解碼指定的byte子數(shù)組,構(gòu)造一個新的String。新的字符串從第offset元素開始共length個字符String(StringBufferbuffer)創(chuàng)建一個字符串,它包含字符串緩沖區(qū)buffer中當(dāng)前包含的字符序列。2024/12/24李飛——東北大學(xué)秦皇島分校計算中心29/35例4.8用各種方法創(chuàng)建字符串對象。importjava.io.UnsupportedEncodingException;publicclasseg4_8{ publicstaticvoidmain(String[]args)throwsUnsupportedEncodingException{ char[]a={'H','e','l','l','o'}; char[]b={'H','u','a','n','g'}; byte[]c={68,97,111}; byte[]d={77,121,32,46}; Stringc0=newString(a); Stringc1="Qin"; Stringc2=newString(b,0,5); Stringc3=newString(c); Stringc4=newString(d,0,2,"US-ASCII"); StringBuffersb=newStringBuffer("Hometown"); Stringc5=newString(sb); System.out.println(c0+""+c1+""+c2+""+c3+","+c4+""+c5+"!"); }}使用String對象2024/12/24李飛——東北大學(xué)秦皇島分校計算中心30/35表4.4字符串類的常用成員方法charAt(intindex)返回指定索引處的char值。compareTo(StringanotherString)按字典順序比較兩個字符串。如果按字典順序此String對象位于參數(shù)字符串之前,則比較結(jié)果為一個負(fù)整數(shù)。如果按字典順序此String對象位于參數(shù)字符串之后,則比較結(jié)果為一個正整數(shù)。如果這兩個字符串相等,則結(jié)果為0compareToIgnoreCase(Stringstr)按字典順序比較兩個字符串,不考慮大小寫。規(guī)則同上concat(Stringstr)將指定字符串str連接到此字符串的結(jié)尾。replace(charoldChar,charnewChar)返回一個新的字符串,它是通過用newChar替換此字符串中出現(xiàn)的所有oldChar得到的。equals(ObjectanObject)比較字符串和對象anObject是否相等,相等返回true否則返回falseequalsIgnoreCase(StringanotherString)將此String與另一個String比較,不考慮大小寫。如果兩個字符串的長度相同,并且其中的相應(yīng)字符都相等(忽略大小寫),則認(rèn)為這兩個字符串是相等的。getBytes()使用平臺的默認(rèn)字符集將此String編碼為byte序列,并將結(jié)果存儲到一個新的byte數(shù)組中。getChars(intsrcBegin,intsrcEnd,char[]dst,intdstBegin)將字符從此字符串復(fù)制到目標(biāo)字符數(shù)組。復(fù)制的第一個字符位于索引srcBegin處;要復(fù)制的最后一個字符位于索引srcEnd-1處。要復(fù)制到dst子數(shù)組的字符從索引dstBegin處開始,并結(jié)束于索引isEmpty()判斷字符串是否為空。當(dāng)且僅當(dāng)length()為0時返回true。length()返回此字符串的長度。長度等于字符串中Unicode代碼單元的數(shù)量。substring(intbeginIndex)返回一個新的字符串,它是此字符串的一個子字符串。該子字符串從指定索引處的字符開始,直到此字符串末尾。substring(intbeginIndex,intendIndex)返回一個新字符串,它是此字符串的一個子字符串。該子字符串從指定的beginIndex處開始,直到索引endIndex-1處的字符。toCharArray()將此字符串轉(zhuǎn)換為一個新的字符數(shù)組。toLowerCase()將此String中的所有字符都轉(zhuǎn)換為小寫。toUpperCase()將此String中的所有字符都轉(zhuǎn)換為大寫。trim()返回字符串的副本,忽略前導(dǎo)空白和尾部空白。for-each語句功能:J2SE5.0后,啟用。用于遍歷數(shù)組。格式:for(typeelement:array){//讀對數(shù)組array中每個type類型變量elementSystem.out.println(element);……}舉例:publicclasseg5_1{ publicstaticvoidmain(String[]args){ int[]a={1,2,3,45,5,6,7,8,9}; for(intb:a) System.out.println(b); }}十二月24李飛計算中心31/30字符串類的常用類方法2024/12/24李飛——東北大學(xué)秦皇島分校計算中心32/35表4.5字符串類的常用類方法copyValueOf(char[]data)返回指定數(shù)組中表示該字符序列的String。copyValueOf(char[]data,intoffset,intcount)返回指定數(shù)組中從第offset個字符開始的count個字符表示字符序列的String。valueOf(booleanb)返回boolean型變量b的字符串表示形式。其中的參數(shù)b可以是boolean類型也可以是char,int,long,float,double和字符數(shù)組中的任何一種類型。2024/12/24李飛——東北大學(xué)秦皇島分校計算中心33/35例4.10把用戶輸入的明碼轉(zhuǎn)換為密碼,轉(zhuǎn)換規(guī)則為明碼的每個字符的ASCII碼加1.importjava.util.Scanner;publicclasseg4_10{ publicstaticvoidmain(String[]args){ Scannersc=newScanner(System.in); Stringpassword,pass; charp[]; pass=sc.nextLine(); pass=pass.trim(); p=pass.toCharArray(); for(inti=0;i<p.length;i++) p[i]=(char)((int)p[i]+1); password=String.valueOf(p); System.out.println("明碼為:"+pass); System.out.println("密碼為:"+password); }}變長字符串的操作(StringBuffer類)創(chuàng)建StringBuffer對象2024/12/24李飛——東北大學(xué)秦皇島分校計算中心34/35方法名說明StringBuffer()創(chuàng)建一個初始容量為16個字符空字符串緩沖區(qū)。StringBuffer(CharSequenceseq)通過字符序列seq創(chuàng)建一個含seq字符序列的字符串緩沖區(qū)。StringBuffer(intcapacity)

創(chuàng)建一個初始容量為capacity個字符的字符串緩沖區(qū)。StringBuffer(Stringstr)創(chuàng)建一個初始內(nèi)容為str字符串緩沖區(qū)。StringBuffer的常用方法

2024/12/24李飛——東北大學(xué)秦皇島分校計算中心35/35表4.5StringBuffer對象常用方法方法名說明append(b)向緩沖區(qū)追加參數(shù)b的字符形式。charAt(intindex)求緩沖區(qū)中第index個字符的char值。capacity()求當(dāng)前字符串緩沖區(qū)的容量。delete(intstart,intend)刪除緩沖區(qū)中以start開始到end結(jié)束的字符。deleteChar

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論