




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第五章數(shù)組和字符串
學(xué)習(xí)目標理解數(shù)組的概念,能夠聲明一維數(shù)組和二維數(shù)組,能夠使用靜態(tài)和動態(tài)兩種方式初始化數(shù)組元素。能夠編寫訪問數(shù)組元素的程序理解字符串的概念,能夠定義字符串,并進行初始化。能進行字符串與基本數(shù)據(jù)類型之間的轉(zhuǎn)換,能使用String類和StringBuffer類中的方法對字符串進行相關(guān)的操作理解向量的概念,掌握向量的定義及使用方法,能正確完成向量元素的添加、刪除、修改及查找等操作本章主要內(nèi)容數(shù)組12Vector類3字符串類型第一節(jié)數(shù)組數(shù)組聲明數(shù)組是相同數(shù)據(jù)類型的元素按一定順序排列的數(shù)據(jù)序列數(shù)組是一系列的匿名變量,數(shù)組中的元素可通過下標來訪問在Java中,數(shù)組是對象。類Object中定義的方法都可以用于數(shù)組對象??梢哉f明任何類型的數(shù)組,基本類型,類類型,數(shù)組等。數(shù)組在使用之前必須先說明一維數(shù)組的定義類型
數(shù)組名[];
變量名后接方括號;將方括號放到變量名的左面。如下所示:
chars[];
intintArray[];
DatedateArray[];
Pointpoints[];類型[]數(shù)組名;創(chuàng)建數(shù)組
靜態(tài)初始化和動態(tài)初始化
靜態(tài)初始化就是在定義數(shù)組的同時對數(shù)組元素進行初始化
靜態(tài)初始化可用于任何元素類型,初值塊中每個位置的每個元素對應(yīng)一個引用。動態(tài)初始化是使用運算符new為數(shù)組分配空間。數(shù)組說明的方括號中的數(shù)字表示數(shù)組元素個數(shù)靜態(tài)初始化intintArray[]={1,2,3,4};int[]ages={34,12,45};double[]heights={84.124,78.2,61.5};boolean[]tired={true,false,false,true};String[]names={“Zhang",“Li",“Wang"};動態(tài)初始化類型數(shù)組名[]=new類型[數(shù)組大小];類型[]數(shù)組名=new類型[數(shù)組大小];s=newchar[20];類類型的數(shù)組
類類型的數(shù)組需要經(jīng)過兩步進行空間分配
使用運算符new只是為數(shù)組本身分配空間,并沒有對數(shù)組的元素進行初始化
第一步先創(chuàng)建數(shù)組本身:typearrayName[]=newtype[arraySize];
第二步分別創(chuàng)建各個數(shù)組元素: arrayName[0]=newtype(paramList); … arrayName[arraySize-1]=newtype(paramList);類類型的數(shù)組points=newPoint[100];
points[0]=newPoint();
points[1]=newPoint();
…
points[99]=newPoint();
stringstringArrar[];stringArray=newString[3];stringArray[0]=newString(“how”);stringArray[1]=newString(“are”);Java中沒有靜態(tài)的數(shù)組定義,內(nèi)存都是通過new動態(tài)分配的。錯誤的定義:intintArray[5];數(shù)組說明與創(chuàng)建關(guān)系
Point類
classPoint{ intx,y; Point(intx1,inty1){ x=x1; y=y1; } Point(){ this(0,0); }}數(shù)組說明與創(chuàng)建關(guān)系points(a)pointslength:100…(b)points…length:100X:Y:(c)Point[]points;執(zhí)行完畢,系統(tǒng)為變量points分配一個引用空間points=newPoint[100];執(zhí)行完畢,系統(tǒng)在內(nèi)存中分配一個數(shù)組對象并把數(shù)組引用賦給變量pointspoints[1]=newPoint();
數(shù)組說明注意數(shù)組變量的類型可以指向它的父類正確錯誤Object[]points;points=newPoint[100];Point[]points;points=newObject[100];數(shù)組邊界
數(shù)組下標從0開始,元素個數(shù)length是數(shù)組類中唯一的數(shù)據(jù)成員變量
new創(chuàng)建數(shù)組時系統(tǒng)自動給length賦值數(shù)組一旦創(chuàng)建完畢,其大小就固定下來程序運行時可以使用length進行數(shù)組邊界檢查。如果發(fā)生越界訪問,則拋出一個異常訪問數(shù)組元素intlist[]=newint[10];
for(inti=0;i<list.length;i++){
//進行相應(yīng)處理的代碼
}循環(huán)的結(jié)束條件中使用list.length,而不是常數(shù)10。這樣做不會引起數(shù)組下標越界,使程序更健壯,修改更方便。數(shù)組元素的引用
數(shù)組名加上下標,引用方式為:index為數(shù)組下標,下標從0開始,一直到length-1下標是整型常數(shù)或表達式程序5.1設(shè)給定一組整型數(shù),求它們的平均值及最大值arrayName[index]
arrayName[1],arrayName[i],arrayName[6*i]多維數(shù)組多維數(shù)組的定義Java中沒有真正的多維數(shù)組,可以建立數(shù)組的數(shù)組(的數(shù)組……),由此得到多維數(shù)組n維數(shù)組是n-1維數(shù)組的數(shù)組說明多維數(shù)組時使用類型及多對方括號二維數(shù)組二維數(shù)組的定義方式:與一維數(shù)組一樣,定義對數(shù)組元素也沒有分配內(nèi)存空間,要使用運算符new來分配內(nèi)存,然后才可以訪問每個元素類型數(shù)組名[][];類型[][]數(shù)組名;類型[]數(shù)組名[];多維數(shù)組的初始化靜態(tài)初始化在定義數(shù)組的同時為數(shù)組分配空間動態(tài)初始化直接為每一維分配空間從最高維起(而且必須從最高維開始),分別為每一維分配內(nèi)存intintArray[][]={{2,3},{1,5},{3,4}};
數(shù)組intArray為一個3行2列的數(shù)組,它的形式如下:
23 15 34類型數(shù)組名[][]=new類型[數(shù)組第1維大小][];數(shù)組名[0]=new類型[數(shù)組第2維大小];數(shù)組名[1]=new類型[數(shù)組第2維大小];......數(shù)組名[數(shù)組第一維大小-1]=new類型[數(shù)組第2維大小];類型數(shù)組名[][]=new類型[數(shù)組第一維大小][數(shù)組第二維大小]例如:inta[][]=newint[2][3];
二維數(shù)組例一inttwoDim[][]=newint[4][]; twoDim[0]=newint[5];twoDim[1]=newint[5];二維數(shù)組例二Strings[][]=newString[2][];s[0]=newString[2];s[1]=newString[3];s[0][0]=newString(“Good”);s[0][1]=newString(“Luck”);s[1][0]=newString(“to”);s[1][1]=newString(“you”);s[1][2]=newString(“!”);非矩陣數(shù)組inttwoDim[][]=newint[4][];
twoDim[0]=newint[2];
twoDim[1]=newint[4];
twoDim[2]=newint[6];
twoDim[3]=newint[8];XXXXXXXXXXXX
XXXXXXXXtwoDim數(shù)組為4行,每行的元素個數(shù)分別為2,4,6,8個矩陣數(shù)組二維矩陣數(shù)組的一般說明格式為:arrayName是數(shù)組名,length1和length2分別為數(shù)組各維的大小,type是數(shù)組元素的類型。
類型數(shù)組名[][]=new類型[數(shù)組第一維大小][數(shù)組第二維大小]二維矩陣數(shù)組intmatrix[][]=newint[4][5];將創(chuàng)建一個有4個一維數(shù)組的數(shù)組,每個一維數(shù)組中又有5個整數(shù),即4行5列的整數(shù)矩陣。該行等價于下列這段代碼:intmatrix[][]=newint[4][];for(intj=0;j<matrix.length;j++) matrix[j]=newint[5];多維數(shù)組說明正確的聲明:inta1[][]=newint[2][3];inta2[][]=newint[2][];int[]a3[]=newint[4][6];錯誤的說明:interrarr1[2][3];interrarr2[][]=newint[][4];interrarr3[][4]=newint[3][4];不允許說明靜態(tài)數(shù)組
說明順序應(yīng)從高維到低維
數(shù)組維數(shù)的指定只能出現(xiàn)在new運算符之后
多維數(shù)組的引用
二維數(shù)組引用方式為:數(shù)組名[第1維下標][第2維下標]例如:
intmyTable[][]=newint[4][3];
myTable[0][0]=34;
myTable[0][1]=15;
myTable[0][2]=26;多維數(shù)組的引用例intmyTable[][]={ {23,45,65,34,21,67,78}, {46,14,18,46,98,63,88}, {98,81,64,90,21,14,23}, {54,43,55,76,22,43,33}};for(introw=0;row<4;row++){ for(intcol=0;col<7;col++) System.out.print(myTable[row][col]+""); System.out.println();}0123456023456534216778146141846986388298816490211423354435576224333多維數(shù)組的引用例計算表中各行元素之和并查找其值最大的那個行程序5.2
結(jié)果:Row2hastheMAXsumof391length屬性
多維數(shù)組的length屬性只返回第一維的長度
intages[4][7];ages.length; //返回4,而不是28
可以分別存取每一維的長度,如:
int[][]ages=intages[4][7]; int[]firstArray=ages[0]; ages.length*firstArray.length; //返回28數(shù)組復(fù)制
Java方法arraycopy()
//程序5.3classArrayTest{publicstaticvoidmain(Stringargs[]){ intelements[]={1,2,3,4,5,6}; inthold[]={10,9,8,7,6,5,4,3,2,1}; System.arraycopy(elements,1,hold,2,4); }}第二節(jié)字符串類型
字符串
內(nèi)存中連續(xù)排列的一個或多個字符String
處理不變字符串StringBuffer處理可變字符串字符串的聲明字符串常量系統(tǒng)為程序中出現(xiàn)的字符串常量自動創(chuàng)建一個String對象
字符串變量
System.out.println(“ThisisaString”);將創(chuàng)建“ThisisaString”對象Strings1;StringBuffersb1;Strings1=newString();charchars[]={'a','b','c'};Strings2=newString(chars);Strings3="HelloWorld!";
字符串處理String類length()
返回字符串中的字符個數(shù)charAt(intindex)
返回字符串中index位置的字符toLowerCase()
將當前字符串中所有字符轉(zhuǎn)換為小寫形式字符串處理String類toUpperCase()將當前字符串中所有字符轉(zhuǎn)換為大寫形式subString(intbeginIndex)
當前字符串中從beginIndex開始到末尾的子串replace(charoldChar,charnewChar)
將當前字符串中出現(xiàn)的所有oldChar轉(zhuǎn)換為newChar程序5.4結(jié)果:beforechanged,s=ThisisatestString!afterchanged,s=ThisisatestString!t=thisisateststring!s.length=22strb.length=22s3.replace=ThisisotestString!strb.replace=ThatisatestString!strb.capacity=38字符串處理例StringBuffer類修改一個StringBuffer類的字符串時,不用再創(chuàng)建一個新的字符串對象,而是直接操作原字符串分配內(nèi)存時,除去字符所占空間外,再另加16個字符大小的緩沖區(qū)StringBuffer的長度是指存儲在其中的字符個數(shù),容量是指緩沖所能容納的最大字符數(shù)String類對象使用concat(Stringstr)方法將str連接在當前字符串的尾部
重載運算符“+”StringBuffer類對象使用append()方法實現(xiàn)連接
Strings=newStringBuffer("Heis").append(age).append("yearsold.").toString();連接Strings="Heis"+age+"yearsold.";
Strings="Thisisthe";Stringt=s.concat("String.");t的內(nèi)容為:"ThisistheString."比較
可用方法使用關(guān)系運算符“==”
與equals()方法不同的是,“==”判定兩字符串對象是否是同一實例,即它們在內(nèi)存中的存儲空間是否相同
compareTo()、equals()、equalsIgnoreCase()、regionMatches()比較例子程序5.5第三節(jié)Vector類對應(yīng)于類似數(shù)組的順序存儲的數(shù)據(jù)結(jié)構(gòu),允許不同類型的元素共存于一個變長數(shù)組中,可以看作是把不同類型元素按照動態(tài)數(shù)組進行處理可以看作是一個可變大小的數(shù)組
用一個整數(shù)類型的次序值來訪問
增加或刪除了元素,大小也變大或變小
概述
適合情況需要處理的對象數(shù)目不定,序列中的元素都是對象或可以表示為對象;需要將不同類的對象組合成一個數(shù)據(jù)序列;需要做頻繁的對象序列中元素的插入和刪除;經(jīng)常需要定位序列中的對象和其他查找操作;在不同的類之間傳遞大量的數(shù)據(jù);
Vector類addElement(Objectobj):將新元素obj添加到序列尾部。insertElementAt(Objectobj,intindex):將指定對象obj插入到指定位置index處。add(intindex,Objectobj):在向量的指定位置index插入指定的元素obj。removeAllElements():清除向量序列中的所有元素,同時向量的大小置為0。Vector類setElementAt(Objectobj,intindex):將向量序列index位置處的對象元素修改為obj。如果下標index是負數(shù)或超出實際元素的個數(shù),則拋出異常ArrayIndexOutOfBoundsException。removeElement(Objectobj):刪除向量序列中第一個與指定的obj對象相同的元素,同時將后面的所有元素均前移一個位置。這個方法返回的是一個布爾值,表示刪除操作成功與否。removeElementAt(intindex):刪除index位置的元素,同時將后面的所有元素均前移一個位置。如果下標index是負數(shù)或超出實際元素的個數(shù),則拋出異常ArrayIndexOutOfBoundsException。Vector類elementAt(intindex):返回指定位置處的元素。如果下標index是負數(shù)或超出實際元素的個數(shù),則拋出異常ArrayIndexOutOfBoundsException。這個方法的返回值是Object類型的對象,在使用之前通常需要進行強制類型轉(zhuǎn)換,將返回的對象引用轉(zhuǎn)換成Object類的某個具體子類的對象。contains(Objectobj):檢查向量序列中是否包含指定的對象元素obj。indexOf(Objectobj,intstart_index):從指定的start_index位置開始向后搜索,返回所找到的第一個與指定對象obj相同的元素的下標位置。若指定的對象不存在,則返回-1。lastIndexOf(Objectobj,intstart_index):從指定的start_index位置開始向前搜索,返回所找到的第一個與指定對象obj相同的元素的下標位置。若指定的對象不存在,則返回-1。Vector構(gòu)造方法publi
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鐵路鋼板樁施工方案
- 掛籃0 專項施工方案
- 穿孔鋁板龍骨施工方案
- 公路擋土墻施工方案
- 二零二五年度醫(yī)院醫(yī)護人員正式勞動合同范本發(fā)布
- 2025年度航空航天技術(shù)合作意向協(xié)議合同
- 二零二五年度農(nóng)村宅基地使用權(quán)轉(zhuǎn)讓與農(nóng)村集體產(chǎn)權(quán)制度改革合同
- 2025年度洗衣店門店經(jīng)營權(quán)轉(zhuǎn)讓協(xié)議
- 2025年洗車機租賃與新能源汽車充電設(shè)施配套服務(wù)合同
- 二零二五年度醫(yī)療機構(gòu)保安臨時工服務(wù)協(xié)議
- 2025年上半年中國海油秋季校園招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年新疆區(qū)公務(wù)員錄用考試《行測》真題及答案解析
- 2024年廣東公務(wù)員考試申論試題(省市卷)
- 化學(xué)教學(xué)論(課堂PPT)
- 抗滑樁+預(yù)應(yīng)力錨索施工方案
- 2017版和2002版醫(yī)療器械分類目錄對比完整版
- 飲水機濾芯更換記錄表
- 2021年廣州市事業(yè)單位《公共基礎(chǔ)知識》1000題必考題庫
- 養(yǎng)老保險及職業(yè)年金相關(guān)解釋PPT課件
- 薄膜開關(guān)FQC作業(yè)指導(dǎo)書QC-110
- 自動控制理論52頻域:伯德圖
評論
0/150
提交評論