Java程序設(shè)計(jì) 第03章 數(shù)據(jù)與字符串ppt課件_第1頁(yè)
Java程序設(shè)計(jì) 第03章 數(shù)據(jù)與字符串ppt課件_第2頁(yè)
Java程序設(shè)計(jì) 第03章 數(shù)據(jù)與字符串ppt課件_第3頁(yè)
Java程序設(shè)計(jì) 第03章 數(shù)據(jù)與字符串ppt課件_第4頁(yè)
Java程序設(shè)計(jì) 第03章 數(shù)據(jù)與字符串ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第3 3章章數(shù)組與字符串?dāng)?shù)組與字符串 在程序設(shè)計(jì)中,數(shù)組類(lèi)型是一種表示數(shù)據(jù)在程序設(shè)計(jì)中,數(shù)組類(lèi)型是一種表示數(shù)據(jù)集合的常用手段,字符串是一種表示姓名集合的常用手段,字符串是一種表示姓名、提示信息等類(lèi)似數(shù)據(jù)的常見(jiàn)形式。在、提示信息等類(lèi)似數(shù)據(jù)的常見(jiàn)形式。在JavaJava語(yǔ)言中,為數(shù)組類(lèi)型與字符串都定義語(yǔ)言中,為數(shù)組類(lèi)型與字符串都定義了相應(yīng)的標(biāo)準(zhǔn)類(lèi),了相應(yīng)的標(biāo)準(zhǔn)類(lèi),ArraysArrays是實(shí)現(xiàn)數(shù)組類(lèi)型是實(shí)現(xiàn)數(shù)組類(lèi)型的組織與操作的類(lèi),的組織與操作的類(lèi),StringString是實(shí)現(xiàn)字符串是實(shí)現(xiàn)字符串存儲(chǔ)與操作的類(lèi)。這樣既體現(xiàn)了存儲(chǔ)與操作的類(lèi)。這樣既體現(xiàn)了JavaJava面向面向?qū)ο蟮耐暾?,又增?qiáng)

2、了這兩種數(shù)據(jù)的操對(duì)象的完整性,又增強(qiáng)了這兩種數(shù)據(jù)的操作能力,為簡(jiǎn)化程序設(shè)計(jì)過(guò)程,提高程序作能力,為簡(jiǎn)化程序設(shè)計(jì)過(guò)程,提高程序的可靠性提供了可能性。的可靠性提供了可能性。 3.1 3.1 數(shù)組類(lèi)型數(shù)組類(lèi)型 根據(jù)數(shù)據(jù)類(lèi)型的構(gòu)成方式不同,可以將根據(jù)數(shù)據(jù)類(lèi)型的構(gòu)成方式不同,可以將所有的數(shù)據(jù)類(lèi)型分成兩個(gè)類(lèi)別:簡(jiǎn)單數(shù)所有的數(shù)據(jù)類(lèi)型分成兩個(gè)類(lèi)別:簡(jiǎn)單數(shù)據(jù)類(lèi)型和復(fù)合數(shù)據(jù)類(lèi)型。所謂簡(jiǎn)單是指據(jù)類(lèi)型和復(fù)合數(shù)據(jù)類(lèi)型。所謂簡(jiǎn)單是指用于組織單值數(shù)據(jù)的數(shù)據(jù)類(lèi)型;所謂復(fù)用于組織單值數(shù)據(jù)的數(shù)據(jù)類(lèi)型;所謂復(fù)合是指組織數(shù)據(jù)集合的數(shù)據(jù)類(lèi)型合是指組織數(shù)據(jù)集合的數(shù)據(jù)類(lèi)型. . 由惟一確定某個(gè)數(shù)組元素所需要的下標(biāo)由惟一確定某個(gè)數(shù)組元素所需

3、要的下標(biāo)個(gè)數(shù)可以將數(shù)組分為一維數(shù)組、二維數(shù)個(gè)數(shù)可以將數(shù)組分為一維數(shù)組、二維數(shù)組及多維數(shù)組。組及多維數(shù)組。 3.1.1 3.1.1 一維數(shù)組一維數(shù)組 所謂一維數(shù)組是指每個(gè)元素由一個(gè)下標(biāo)所謂一維數(shù)組是指每個(gè)元素由一個(gè)下標(biāo)值惟一確定的數(shù)組類(lèi)型。這是一種使用值惟一確定的數(shù)組類(lèi)型。這是一種使用十分頻繁的數(shù)據(jù)類(lèi)型,它的特征明顯、十分頻繁的數(shù)據(jù)類(lèi)型,它的特征明顯、操作方便、易于理解,是每個(gè)程序設(shè)計(jì)操作方便、易于理解,是每個(gè)程序設(shè)計(jì)者在編寫(xiě)程序的過(guò)程中無(wú)法回避使用的者在編寫(xiě)程序的過(guò)程中無(wú)法回避使用的一種數(shù)據(jù)類(lèi)型。一種數(shù)據(jù)類(lèi)型。 1. 1. 一維數(shù)組的定義一維數(shù)組的定義 定義數(shù)組型變量的語(yǔ)法格式為:定義數(shù)組型變

4、量的語(yǔ)法格式為: 數(shù)組元素類(lèi)型數(shù)組元素類(lèi)型 數(shù)組型變量名數(shù)組型變量名; ; 或者或者 數(shù)組元素類(lèi)型數(shù)組元素類(lèi)型 數(shù)組型變量名數(shù)組型變量名 ; ; “數(shù)組元素類(lèi)型為組成一維數(shù)組的元數(shù)組元素類(lèi)型為組成一維數(shù)組的元素類(lèi)型,素類(lèi)型,“數(shù)組型變量名為定義的數(shù)數(shù)組型變量名為定義的數(shù)組型變量名稱(chēng),它應(yīng)該符合組型變量名稱(chēng),它應(yīng)該符合JavaJava語(yǔ)言的語(yǔ)言的標(biāo)識(shí)符命名規(guī)則,建議遵守標(biāo)識(shí)符命名規(guī)則,建議遵守JavaJava語(yǔ)言的語(yǔ)言的標(biāo)識(shí)符命名規(guī)范。標(biāo)識(shí)符命名規(guī)范。 int intArray; 或者或者 int intArray ; float floatArray; 或者或者 float floatArra

5、y ; String stringArray; 或者或者 String stringArray ; 建議使用前一種格式風(fēng)格,這種格式風(fēng)格的建議使用前一種格式風(fēng)格,這種格式風(fēng)格的好處是將數(shù)據(jù)類(lèi)型集中表示,即前面是數(shù)據(jù)好處是將數(shù)據(jù)類(lèi)型集中表示,即前面是數(shù)據(jù)類(lèi)型,后面是變量名稱(chēng),而后面一種格式風(fēng)類(lèi)型,后面是變量名稱(chēng),而后面一種格式風(fēng)格的數(shù)據(jù)類(lèi)型被變量名稱(chēng)分隔為前后兩個(gè)部格的數(shù)據(jù)類(lèi)型被變量名稱(chēng)分隔為前后兩個(gè)部分。分。Java語(yǔ)言保留這種定義格式風(fēng)格完全是語(yǔ)言保留這種定義格式風(fēng)格完全是為了尊重人們的使用習(xí)慣。為了尊重人們的使用習(xí)慣。2. 2. 一維數(shù)組的創(chuàng)建一維數(shù)組的創(chuàng)建 一個(gè)數(shù)組可以包含多個(gè)元素,所含

6、的元一個(gè)數(shù)組可以包含多個(gè)元素,所含的元素?cái)?shù)目被稱(chēng)為數(shù)組的長(zhǎng)度,數(shù)組中也可素?cái)?shù)目被稱(chēng)為數(shù)組的長(zhǎng)度,數(shù)組中也可以沒(méi)有任何元素,此時(shí)稱(chēng)為空數(shù)組。正以沒(méi)有任何元素,此時(shí)稱(chēng)為空數(shù)組。正因?yàn)槿绱耍趧?chuàng)建數(shù)組時(shí)需要給出組成因?yàn)槿绱?,在?chuàng)建數(shù)組時(shí)需要給出組成數(shù)組的元素?cái)?shù)目。下面是利用數(shù)組的元素?cái)?shù)目。下面是利用newnew運(yùn)算符運(yùn)算符創(chuàng)建數(shù)組的語(yǔ)法格式:創(chuàng)建數(shù)組的語(yǔ)法格式: newnew數(shù)組元素類(lèi)型數(shù)組元素類(lèi)型 數(shù)組元素?cái)?shù)目數(shù)組元素?cái)?shù)目; “數(shù)組元素類(lèi)型為組成數(shù)組的元素類(lèi)數(shù)組元素類(lèi)型為組成數(shù)組的元素類(lèi)型,型,“數(shù)組元素?cái)?shù)目為組成數(shù)組的元數(shù)組元素?cái)?shù)目為組成數(shù)組的元素?cái)?shù)目,這個(gè)值要求大于或等于零。素?cái)?shù)目,這個(gè)值要求

7、大于或等于零。 intArrayintArray由由100100個(gè)個(gè)intint類(lèi)型的元素組成類(lèi)型的元素組成intArray = new int100; intArray = new int100; floatArrayfloatArray由由5050個(gè)個(gè)floatfloat類(lèi)型的元素組成類(lèi)型的元素組成floatArray = new float50; floatArray = new float50; stringArraystringArray由由1010個(gè)個(gè)StringString類(lèi)型的元素組成類(lèi)型的元素組成stringArray = new String10;stringArray =

8、 new String10;也可以將數(shù)組的定義與創(chuàng)建合并也可以將數(shù)組的定義與創(chuàng)建合并char name = new char30;char name = new char30;double doubleData = new double10; double doubleData = new double10; 0 01 12 23 34 42626272728282929name0 01 12 23 34 45 56 67 78 89 9doubleData3. 3. 一維數(shù)組的初始化一維數(shù)組的初始化 在創(chuàng)建數(shù)組的同時(shí),為數(shù)組元素賦予初始值的過(guò)程在創(chuàng)建數(shù)組的同時(shí),為數(shù)組元素賦予初始值的過(guò)程被稱(chēng)

9、為數(shù)組的初始化。被稱(chēng)為數(shù)組的初始化。 int intArray = 10,20,30,40,50,60,70,80,90,100; 操作過(guò)程:首先為操作過(guò)程:首先為intArray數(shù)組分配數(shù)組分配10個(gè)個(gè)int型元素型元素所需要占用的存儲(chǔ)空間,然后將初始值所需要占用的存儲(chǔ)空間,然后將初始值10,20,30,40,50,60,70,80,90,100依次賦給依次賦給intArray0intArray9。3. 3. 一維數(shù)組的初始化一維數(shù)組的初始化 String name = zhang, wang, li, zhao; 由于在由于在Java語(yǔ)言中字符串屬于語(yǔ)言中字符串屬于String類(lèi)對(duì)象,所以

10、類(lèi)對(duì)象,所以這條語(yǔ)句的操作過(guò)程會(huì)稍復(fù)雜一些。首先,要為這條語(yǔ)句的操作過(guò)程會(huì)稍復(fù)雜一些。首先,要為4個(gè)個(gè)String型引用分配存儲(chǔ)空間,然后再根據(jù)型引用分配存儲(chǔ)空間,然后再根據(jù)4個(gè)初始個(gè)初始值為值為4個(gè)字符串分配存儲(chǔ)空間,最后將初始值個(gè)字符串分配存儲(chǔ)空間,最后將初始值z(mì)hang,wang,li,zhao 的引用依次賦給的引用依次賦給name0name3。 4. 4. 一維數(shù)組元素的訪問(wèn)一維數(shù)組元素的訪問(wèn) 創(chuàng)建數(shù)組后,就可以通過(guò)引用訪問(wèn)數(shù)組元素以達(dá)創(chuàng)建數(shù)組后,就可以通過(guò)引用訪問(wèn)數(shù)組元素以達(dá)到對(duì)數(shù)組操作的目的。到對(duì)數(shù)組操作的目的。 JavaJava訪問(wèn)數(shù)組元素的格式為:訪問(wèn)數(shù)組元素的格式為: arr

11、ayNamearrayName下標(biāo)表達(dá)式下標(biāo)表達(dá)式 在運(yùn)行程序時(shí),在運(yùn)行程序時(shí),JavaJava語(yǔ)言會(huì)嚴(yán)格地檢查每個(gè)語(yǔ)言會(huì)嚴(yán)格地檢查每個(gè)“下下標(biāo)表達(dá)式的取值范圍,一旦發(fā)生越界就會(huì)拋出標(biāo)表達(dá)式的取值范圍,一旦發(fā)生越界就會(huì)拋出ArrayIndexOutOfBoundsExceptionArrayIndexOutOfBoundsException異常。異常。 當(dāng)需要對(duì)數(shù)組中的每個(gè)元素進(jìn)行操作時(shí),可以當(dāng)需要對(duì)數(shù)組中的每個(gè)元素進(jìn)行操作時(shí),可以利用數(shù)組對(duì)象中封裝的利用數(shù)組對(duì)象中封裝的lengthlength屬性獲得當(dāng)前數(shù)屬性獲得當(dāng)前數(shù)組中包含的元素?cái)?shù)目。組中包含的元素?cái)?shù)目。 int value = 10,

12、9,40,20,12,8,9; int value = 10,9,40,20,12,8,9; for (int i = 0, sum = 0; i for (int i = 0, sum = 0; i value.length; i+) value.length; i+) sum += valuei; sum += valuei; 在在forfor語(yǔ)句中,將循環(huán)上界設(shè)定為語(yǔ)句中,將循環(huán)上界設(shè)定為value.lengthvalue.length的好處是:當(dāng)?shù)暮锰幨牵寒?dāng)valuevalue數(shù)組的長(zhǎng)度數(shù)組的長(zhǎng)度發(fā)生變化時(shí)不需要修改程序的其他地方。發(fā)生變化時(shí)不需要修改程序的其他地方。 在在JDK 5.

13、0版本中增加了一個(gè)專(zhuān)門(mén)用于操作數(shù)據(jù)集版本中增加了一個(gè)專(zhuān)門(mén)用于操作數(shù)據(jù)集合的循環(huán)流程控制語(yǔ)句合的循環(huán)流程控制語(yǔ)句for each,其功能更加強(qiáng)大、,其功能更加強(qiáng)大、書(shū)寫(xiě)更加簡(jiǎn)潔。這種語(yǔ)句的書(shū)寫(xiě)格式為:書(shū)寫(xiě)更加簡(jiǎn)潔。這種語(yǔ)句的書(shū)寫(xiě)格式為: for (數(shù)組元素型變量數(shù)組元素型變量 :數(shù)組型變量:數(shù)組型變量) 語(yǔ)句語(yǔ)句; “數(shù)組元素型變量是與數(shù)組元素同類(lèi)型的變量,數(shù)組元素型變量是與數(shù)組元素同類(lèi)型的變量, “數(shù)組型變量是一個(gè)表示數(shù)組引用的變量。數(shù)組型變量是一個(gè)表示數(shù)組引用的變量。 例如,可以將上述數(shù)組元素累加的程序段改寫(xiě)成:例如,可以將上述數(shù)組元素累加的程序段改寫(xiě)成: int sum = 0; for

14、(int v : value) sum += v; 這條語(yǔ)句的執(zhí)行過(guò)程可以描述為:循環(huán)訪問(wèn)這條語(yǔ)句的執(zhí)行過(guò)程可以描述為:循環(huán)訪問(wèn)value數(shù)數(shù)組中的每個(gè)元素并將其內(nèi)容累加到變量組中的每個(gè)元素并將其內(nèi)容累加到變量sum中。中。 5. 5. 一維數(shù)組的復(fù)制一維數(shù)組的復(fù)制 在在Java語(yǔ)言中,數(shù)組型變量可以實(shí)現(xiàn)兩種形式語(yǔ)言中,數(shù)組型變量可以實(shí)現(xiàn)兩種形式的復(fù)制操作。的復(fù)制操作。 第一種復(fù)制操作被稱(chēng)為數(shù)組引用的復(fù)制第一種復(fù)制操作被稱(chēng)為數(shù)組引用的復(fù)制 int firstArray = 10,20,30,40,50,60; int secondArray; secondArray = firstArray;

15、 這條賦值語(yǔ)句的執(zhí)行效果是將這條賦值語(yǔ)句的執(zhí)行效果是將firstArray的引的引用信息賦給用信息賦給secondArray,此時(shí),此時(shí)firstArray與與secondArray共同引用一個(gè)數(shù)組。共同引用一個(gè)數(shù)組。 arraycopy是是System類(lèi)中的一個(gè)靜態(tài)方法。類(lèi)中的一個(gè)靜態(tài)方法。 定義格式為:定義格式為: void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 其中,其中,src為被拷貝的原始數(shù)組,為被拷貝的原始數(shù)組,srcPos為為原始數(shù)組中將要拷貝的數(shù)組元素的起始位原始數(shù)組中將要

16、拷貝的數(shù)組元素的起始位置,置,dest為目標(biāo)數(shù)組,為目標(biāo)數(shù)組,destPos為拷貝到目為拷貝到目標(biāo)數(shù)組中后放置數(shù)組元素的起始位置,標(biāo)數(shù)組中后放置數(shù)組元素的起始位置,length為拷貝的數(shù)組元素?cái)?shù)目。為拷貝的數(shù)組元素?cái)?shù)目。int arraySrc = 5,10,15,20,25,30,35,40,45,50;int arrayDest = new int10;執(zhí)行語(yǔ)句:執(zhí)行語(yǔ)句:System.arraycopy(arraySrc, 0, arrayDest, 0, 10) ; 舉例:假設(shè)有舉例:假設(shè)有n n個(gè)候選人參加學(xué)生會(huì)主席的競(jìng)選,個(gè)候選人參加學(xué)生會(huì)主席的競(jìng)選,最后將根據(jù)學(xué)生的投票情況決定學(xué)

17、生會(huì)主席的獲勝最后將根據(jù)學(xué)生的投票情況決定學(xué)生會(huì)主席的獲勝人選。編寫(xiě)一個(gè)程序,完成選票的統(tǒng)計(jì)工作,并顯人選。編寫(xiě)一個(gè)程序,完成選票的統(tǒng)計(jì)工作,并顯示最終的獲勝者。示最終的獲勝者。 分析:為了利用程序解決這個(gè)問(wèn)題,假設(shè)為每位候分析:為了利用程序解決這個(gè)問(wèn)題,假設(shè)為每位候選人編號(hào)選人編號(hào)1. n1. n。如果希望為某位候選人投票時(shí),。如果希望為某位候選人投票時(shí),只需要從鍵盤(pán)上輸入這位候選人的編號(hào)即可。只需要從鍵盤(pán)上輸入這位候選人的編號(hào)即可。 每位候選人所獲的選票的存儲(chǔ)在一個(gè)含有每位候選人所獲的選票的存儲(chǔ)在一個(gè)含有n n個(gè)元素個(gè)元素的一維數(shù)組中。由于含有的一維數(shù)組中。由于含有n n個(gè)元素的一維數(shù)組的

18、下個(gè)元素的一維數(shù)組的下標(biāo)范圍在標(biāo)范圍在0.n-10.n-1之間,所以,在程序?qū)崿F(xiàn)中,需之間,所以,在程序?qū)崿F(xiàn)中,需要將候選人的編號(hào)與數(shù)組元素的下標(biāo)做一個(gè)映射,要將候選人的編號(hào)與數(shù)組元素的下標(biāo)做一個(gè)映射,即即1 1號(hào)候選人在數(shù)組中用下標(biāo)號(hào)候選人在數(shù)組中用下標(biāo)0 0表示,表示,2 2號(hào)候選人在號(hào)候選人在數(shù)組中用下標(biāo)數(shù)組中用下標(biāo)1 1表示,依此類(lèi)推,表示,依此類(lèi)推,n n號(hào)候選人在數(shù)組號(hào)候選人在數(shù)組中用下標(biāo)中用下標(biāo)n-1n-1表示。表示。 在在JavaJava語(yǔ)言中,一維數(shù)組的元素可以屬語(yǔ)言中,一維數(shù)組的元素可以屬于任意類(lèi)型,包括基本數(shù)據(jù)類(lèi)型和引用于任意類(lèi)型,包括基本數(shù)據(jù)類(lèi)型和引用數(shù)據(jù)類(lèi)型。也就是說(shuō)

19、,一維數(shù)組的元素?cái)?shù)據(jù)類(lèi)型。也就是說(shuō),一維數(shù)組的元素又可以是一維數(shù)組類(lèi)型,這就支持了二又可以是一維數(shù)組類(lèi)型,這就支持了二維數(shù)組,乃至多維數(shù)組的概念。由于可維數(shù)組,乃至多維數(shù)組的概念。由于可以借助于二維數(shù)組表示具有二維關(guān)系的以借助于二維數(shù)組表示具有二維關(guān)系的數(shù)據(jù),所以它的應(yīng)用十分廣泛。數(shù)據(jù),所以它的應(yīng)用十分廣泛。 3.1.2 3.1.2 二維數(shù)組二維數(shù)組1. 1. 二維數(shù)組的定義與創(chuàng)建二維數(shù)組的定義與創(chuàng)建 JavaJava語(yǔ)言規(guī)定,二維數(shù)組的定義格式為:語(yǔ)言規(guī)定,二維數(shù)組的定義格式為: 數(shù)組元素類(lèi)型數(shù)組元素類(lèi)型 數(shù)組型變量名數(shù)組型變量名; ; 或者或者 數(shù)組元素類(lèi)型數(shù)組元素類(lèi)型 數(shù)組型變量名數(shù)組型

20、變量名 ; ; 或者或者 數(shù)組元素類(lèi)型數(shù)組元素類(lèi)型 數(shù)組型變量名數(shù)組型變量名 ; ; “數(shù)組元素類(lèi)型為二維數(shù)組的元素類(lèi)型,數(shù)組元素類(lèi)型為二維數(shù)組的元素類(lèi)型, “數(shù)組型變量名為二維數(shù)組型變量名稱(chēng)。數(shù)組型變量名為二維數(shù)組型變量名稱(chēng)。 int intArray; float floatArray ; double doubleArray ; 在這在這3種定義格式中,建議使用第一種格種定義格式中,建議使用第一種格式。第二種格式完全是為了尊重那些習(xí)慣式。第二種格式完全是為了尊重那些習(xí)慣使用使用C/C+定義格式的人們而保留的,第定義格式的人們而保留的,第三種格式清晰度較差,不提倡使用。三種格式清晰度較差,

21、不提倡使用。 創(chuàng)建二維數(shù)組的格式為:創(chuàng)建二維數(shù)組的格式為: new 數(shù)組元素類(lèi)型數(shù)組元素類(lèi)型行數(shù)行數(shù)列數(shù)列數(shù); 其中,其中,“數(shù)組元素類(lèi)型為二維數(shù)組元數(shù)組元素類(lèi)型為二維數(shù)組元素的類(lèi)型素的類(lèi)型, “行數(shù)與行數(shù)與“列數(shù)表明了陳列數(shù)表明了陳列在行方向與列方向的元素?cái)?shù)量。列在行方向與列方向的元素?cái)?shù)量。 例如,例如, intArray = new int105; floatArray = new float34;int intArray = new int105;等價(jià)于:等價(jià)于:intArray = new int10;for (int i = 0; i 10; i+) intArrayi = new

22、int5;每行元素個(gè)數(shù)不同每行元素個(gè)數(shù)不同floatArray = new float5 ;for (int i = 0; i 5; i+) floatArrayi = new floati+1;2. 2. 二維數(shù)組的初始化二維數(shù)組的初始化 int intArray=1,2,3,4, 5,6,7,8, 9, 10, 11,12; 執(zhí)行效果:首先創(chuàng)建二維數(shù)組,然后,將第執(zhí)行效果:首先創(chuàng)建二維數(shù)組,然后,將第1個(gè)括個(gè)括號(hào)中的號(hào)中的3個(gè)數(shù)值分別賦給第個(gè)數(shù)值分別賦給第1行的行的3個(gè)元素;再將第個(gè)元素;再將第2個(gè)括號(hào)中的個(gè)括號(hào)中的3個(gè)數(shù)值分別賦給第個(gè)數(shù)值分別賦給第2行的行的3個(gè)元素;個(gè)元素;最后將第最后

23、將第3個(gè)括號(hào)中的個(gè)括號(hào)中的3個(gè)數(shù)值分別賦給第個(gè)數(shù)值分別賦給第3行的行的3個(gè)元素。初始化后的數(shù)組元素狀態(tài)為:個(gè)元素。初始化后的數(shù)組元素狀態(tài)為:3. 3. 二維數(shù)組元素的訪問(wèn)二維數(shù)組元素的訪問(wèn) 創(chuàng)建二維數(shù)組之后,可以通過(guò)引用型的二維數(shù)組創(chuàng)建二維數(shù)組之后,可以通過(guò)引用型的二維數(shù)組變量對(duì)數(shù)組元素進(jìn)行操作了。二維數(shù)組必須用兩變量對(duì)數(shù)組元素進(jìn)行操作了。二維數(shù)組必須用兩個(gè)下標(biāo)惟一地確定元素,第一個(gè)下標(biāo)為行下標(biāo),個(gè)下標(biāo)惟一地確定元素,第一個(gè)下標(biāo)為行下標(biāo),第二個(gè)下標(biāo)為列下標(biāo),下標(biāo)的起始編號(hào)從第二個(gè)下標(biāo)為列下標(biāo),下標(biāo)的起始編號(hào)從0 0開(kāi)始。開(kāi)始。 int intArray = new int54; int int

24、Array = new int54; 舉例:利用二維數(shù)組表示矩陣,并實(shí)現(xiàn)兩舉例:利用二維數(shù)組表示矩陣,并實(shí)現(xiàn)兩個(gè)矩陣相乘的操作。個(gè)矩陣相乘的操作。 矩陣可以用來(lái)表示統(tǒng)計(jì)數(shù)據(jù)等方面的各種矩陣可以用來(lái)表示統(tǒng)計(jì)數(shù)據(jù)等方面的各種有關(guān)聯(lián)的數(shù)據(jù)。在數(shù)學(xué)上有關(guān)聯(lián)的數(shù)據(jù)。在數(shù)學(xué)上, ,矩陣可以是由方矩陣可以是由方程組的系數(shù)及常數(shù)構(gòu)成的方陣。下面給出程組的系數(shù)及常數(shù)構(gòu)成的方陣。下面給出一個(gè)方程組與之對(duì)應(yīng)的矩陣表示。一個(gè)方程組與之對(duì)應(yīng)的矩陣表示。 在矩陣的運(yùn)算中,要求兩個(gè)相乘的矩陣在矩陣的運(yùn)算中,要求兩個(gè)相乘的矩陣必須滿(mǎn)足第必須滿(mǎn)足第1 1個(gè)矩陣的列數(shù)等于第個(gè)矩陣的列數(shù)等于第2 2個(gè)矩個(gè)矩陣的行數(shù)。即對(duì)于陣的行數(shù)

25、。即對(duì)于 Am1 Am1n1n1和和Bm2Bm2n2,n2,要求要求n1=m2n1=m2,且結(jié)果矩陣,且結(jié)果矩陣C C的行列數(shù)為的行列數(shù)為m1m1n2n2,其中的每個(gè)元素內(nèi)容為,其中的每個(gè)元素內(nèi)容為 bacjknkkiji,11,public static void enterMatrix(int m, int row, int col) / 輸入矩陣輸入矩陣 for (int i = 0; i row; i+) for (int j = 0; j col; j+) mij = (int) Math.round(Math.random() * 10); public static void p

26、rintMatrix(int m, int row, int col) / 顯示矩陣顯示矩陣 System.out.println(); for (int i = 0; i row; i+) for (int j = 0; j col; j+) System.out.printf(%4d,mij); System.out.println(); System.out.println(); public static void MulMatrix(int a, int row1, int col1, int b, int row2, int col2, int c) / 兩個(gè)矩陣相乘兩個(gè)矩陣相乘

27、for (int i = 0; i row1; i+) for (int j = 0; j col2; j+) cij = 0; for (int k = 0; k col1; k+) cij += aik * bkj; 舉例:編寫(xiě)一個(gè)舉例:編寫(xiě)一個(gè)Java程序,將程序,將NN的方的方陣轉(zhuǎn)圈賦值,并顯示輸出。陣轉(zhuǎn)圈賦值,并顯示輸出。 public static void rotating(int m, int num) / 向方陣中填寫(xiě)數(shù)值向方陣中填寫(xiě)數(shù)值 int k = 1; / 將要填寫(xiě)的數(shù)值將要填寫(xiě)的數(shù)值 for (int i = 0; i = num / 2; i+) / 將要填寫(xiě)的圈

28、數(shù)將要填寫(xiě)的圈數(shù) for (int j = i; j num - i; j+) / 上方行方向上方行方向 mij = k+; for (int j = i + 1; j = i; j-) / 下方行方向下方行方向 mnum - i - 1j = k+; for (int j = num - i - 2; j i; j-) / 左側(cè)列方向左側(cè)列方向 mji = k+; 3.2 3.2 字符串與字符串與StringString類(lèi)類(lèi)l在在Java語(yǔ)言中提供了兩種字符串:語(yǔ)言中提供了兩種字符串:l一類(lèi)是一類(lèi)是String標(biāo)準(zhǔn)類(lèi)實(shí)現(xiàn)的字符串常量;標(biāo)準(zhǔn)類(lèi)實(shí)現(xiàn)的字符串常量;l另一類(lèi)是另一類(lèi)是StringBu

29、ffer標(biāo)準(zhǔn)類(lèi)實(shí)現(xiàn)的可編標(biāo)準(zhǔn)類(lèi)實(shí)現(xiàn)的可編輯修改的字符串。輯修改的字符串。 l與與C語(yǔ)言一樣,語(yǔ)言一樣,Java語(yǔ)言中的字符串直接語(yǔ)言中的字符串直接量使用雙引號(hào)將字符序列括在其中。量使用雙引號(hào)將字符序列括在其中。lthis is a string literal!l這樣書(shū)寫(xiě)的直接量將屬于這樣書(shū)寫(xiě)的直接量將屬于String類(lèi)。類(lèi)。 除了直接書(shū)寫(xiě)字符串直接量以外,還可除了直接書(shū)寫(xiě)字符串直接量以外,還可以將某個(gè)字符串存儲(chǔ)在以將某個(gè)字符串存儲(chǔ)在StringString的類(lèi)對(duì)象的類(lèi)對(duì)象中。由于中。由于StringString類(lèi)提供了很多對(duì)字符串類(lèi)提供了很多對(duì)字符串常量操作的成員方法,所以,這樣做既常量操作

30、的成員方法,所以,這樣做既便于字符串的重復(fù)利用,又可以提高應(yīng)便于字符串的重復(fù)利用,又可以提高應(yīng)用字符串的控制能力。用字符串的控制能力。 String類(lèi)被定義在類(lèi)被定義在java.lang包中。包中。 使用使用String類(lèi)表示字符串需要經(jīng)過(guò)定義、類(lèi)表示字符串需要經(jīng)過(guò)定義、創(chuàng)建、初始化和訪問(wèn)幾個(gè)階段。創(chuàng)建、初始化和訪問(wèn)幾個(gè)階段。 定義一個(gè)定義一個(gè)String類(lèi)對(duì)象的語(yǔ)法格式為:類(lèi)對(duì)象的語(yǔ)法格式為: String 字符串變量名字符串變量名; 其中,其中,String為類(lèi)名,為類(lèi)名, “字符串變量名為對(duì)象名。字符串變量名為對(duì)象名。 需要注意,這里定義的字符串對(duì)象只是需要注意,這里定義的字符串對(duì)象只是

31、一個(gè)引用型變量,需要按照下列格式創(chuàng)一個(gè)引用型變量,需要按照下列格式創(chuàng)建及初始化對(duì)象。建及初始化對(duì)象。 字符串變量名字符串變量名 = 字符串值字符串值; 或或 字符串變量名字符串變量名 = new String(字符串值字符串值); “字符串變量名為引用型的字符串變量名為引用型的String類(lèi)類(lèi)對(duì)象,對(duì)象,“字符串值為字符串直接量或字符串值為字符串直接量或另外一個(gè)引用型的另外一個(gè)引用型的String類(lèi)對(duì)象。類(lèi)對(duì)象。 String str1, str2, str3;str1 = This is a string; str2 = new String(This is a string); str3

32、= str1; 在使用在使用Sting類(lèi)對(duì)象時(shí)需要注意幾點(diǎn):類(lèi)對(duì)象時(shí)需要注意幾點(diǎn):在在Java語(yǔ)言中,字符串直接量中的每個(gè)字語(yǔ)言中,字符串直接量中的每個(gè)字符使用符使用Unicode編碼,占用兩個(gè)字節(jié)。編碼,占用兩個(gè)字節(jié)。如果定義如果定義String類(lèi)對(duì)象之后,沒(méi)有引用任類(lèi)對(duì)象之后,沒(méi)有引用任何一個(gè)字符串,就應(yīng)該賦予何一個(gè)字符串,就應(yīng)該賦予null。String類(lèi)對(duì)象所引用的字符串是常量,不類(lèi)對(duì)象所引用的字符串是常量,不能對(duì)其字符串內(nèi)容進(jìn)行修改。能對(duì)其字符串內(nèi)容進(jìn)行修改。String類(lèi)提供了很多成員方法,可以通過(guò)類(lèi)提供了很多成員方法,可以通過(guò)這些方法更方便、靈活地使用字符串。這些方法更方便、靈活

33、地使用字符串。 舉例:判斷給定的字符串是否為回文字符串。舉例:判斷給定的字符串是否為回文字符串。 所謂回文字符串是指將字符串逆置后與原字符所謂回文字符串是指將字符串逆置后與原字符串相同。例如,串相同。例如,“ABCDCBA“ABCDCBA逆置后還是逆置后還是“ABCDCBA”“ABCDCBA”,這是一個(gè)回文字符串;但,這是一個(gè)回文字符串;但“Program“Program逆置后為逆置后為“margorP”“margorP”,與原字符,與原字符串不相同,這不是回文字符串。串不相同,這不是回文字符串。 public static boolean isPalindrome(String str) /

34、判斷判斷str是否為回文字符串是否為回文字符串 int len = str.length(); /返回字符串長(zhǎng)度返回字符串長(zhǎng)度 for (int index = 0; index len / 2 - 1; index+) if (str.charAt(index) != str.charAt(len - index - 1) /對(duì)稱(chēng)的兩個(gè)字符比較對(duì)稱(chēng)的兩個(gè)字符比較 return false; return true; 3.3 3.3 數(shù)組操作與數(shù)組操作與ArraysArrays類(lèi)應(yīng)用類(lèi)應(yīng)用 Arrays是是Java類(lèi)庫(kù)提供的一個(gè)位于類(lèi)庫(kù)提供的一個(gè)位于java.util包中的標(biāo)準(zhǔn)類(lèi),其中包含了許

35、多包中的標(biāo)準(zhǔn)類(lèi),其中包含了許多靜態(tài)成員方法,通過(guò)它們可以方便地對(duì)靜態(tài)成員方法,通過(guò)它們可以方便地對(duì)數(shù)組進(jìn)行排序、比較與填充等一系列操數(shù)組進(jìn)行排序、比較與填充等一系列操作,由于這些成員方法都是經(jīng)過(guò)精心設(shè)作,由于這些成員方法都是經(jīng)過(guò)精心設(shè)計(jì)、嚴(yán)格檢測(cè),所以,這樣不但可以大計(jì)、嚴(yán)格檢測(cè),所以,這樣不但可以大大地減輕程序設(shè)計(jì)人員的負(fù)擔(dān),還可以大地減輕程序設(shè)計(jì)人員的負(fù)擔(dān),還可以提高程序的質(zhì)量、增加程序的清晰度與提高程序的質(zhì)量、增加程序的清晰度與優(yōu)化程序的執(zhí)行效率。優(yōu)化程序的執(zhí)行效率。 3.4 3.4 綜合應(yīng)用舉例綜合應(yīng)用舉例 舉例:隨機(jī)產(chǎn)生若干個(gè)整數(shù),并采用選擇排序舉例:隨機(jī)產(chǎn)生若干個(gè)整數(shù),并采用選擇排

36、序的算法,按照非遞減順序重新進(jìn)行排列。的算法,按照非遞減順序重新進(jìn)行排列。 問(wèn)題分析:這是一的典型的一維數(shù)組問(wèn)題。為問(wèn)題分析:這是一的典型的一維數(shù)組問(wèn)題。為了展示一維數(shù)組的操作方式,在這個(gè)實(shí)例中,了展示一維數(shù)組的操作方式,在這個(gè)實(shí)例中,自定義選擇排序的成員方法。自定義選擇排序的成員方法。 設(shè)計(jì)說(shuō)明:設(shè)計(jì)三個(gè)成員方法,一個(gè)用于生成設(shè)計(jì)說(shuō)明:設(shè)計(jì)三個(gè)成員方法,一個(gè)用于生成一維數(shù)組的內(nèi)容;一個(gè)用于顯示一維數(shù)組的內(nèi)一維數(shù)組的內(nèi)容;一個(gè)用于顯示一維數(shù)組的內(nèi)容;另一個(gè)用于實(shí)現(xiàn)選擇排序算法。容;另一個(gè)用于實(shí)現(xiàn)選擇排序算法。 由于在排序過(guò)程中,隨時(shí)需要查看或操作每個(gè)由于在排序過(guò)程中,隨時(shí)需要查看或操作每個(gè)整數(shù)

37、,所以,利用一維數(shù)組將參加排序的所有整數(shù),所以,利用一維數(shù)組將參加排序的所有整數(shù)保存起來(lái)是一種最直接且簡(jiǎn)易的方法。整數(shù)保存起來(lái)是一種最直接且簡(jiǎn)易的方法。 public static void sort(int data) / 選擇排序選擇排序 int index; for (int i = 0; i data.length - 1; i+) / 執(zhí)行執(zhí)行n-1趟選擇操作趟選擇操作 index = i; for (int j = i + 1; j dataindex) index = j; if (index != i) / 將最小數(shù)交換到第將最小數(shù)交換到第i個(gè)位置個(gè)位置 int temp = datai; datai = dataindex; dataindex = temp; 舉例:打印舉例:打

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論