第5數(shù)組ppt課件_第1頁
第5數(shù)組ppt課件_第2頁
第5數(shù)組ppt課件_第3頁
第5數(shù)組ppt課件_第4頁
第5數(shù)組ppt課件_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本章要點本章要點u 掌握掌握一維數(shù)組一維數(shù)組創(chuàng)建和使用的方法創(chuàng)建和使用的方法u 掌握掌握二維數(shù)組二維數(shù)組創(chuàng)建和使用的方法創(chuàng)建和使用的方法u 掌握如何掌握如何遍歷遍歷數(shù)組數(shù)組u 掌握如何掌握如何復制復制數(shù)組數(shù)組u 掌握如何掌握如何填充填充數(shù)組數(shù)組u 掌握如何掌握如何排序排序數(shù)組元素數(shù)組元素u 掌握如何掌握如何查找查找數(shù)組元素數(shù)組元素主要內(nèi)容主要內(nèi)容5.1 數(shù)組概述數(shù)組概述n數(shù)組元素有以下五個主要特征數(shù)組元素有以下五個主要特征數(shù)組是數(shù)組是相同數(shù)據(jù)類型相同數(shù)據(jù)類型元素的集合。元素的集合。數(shù)組元素在內(nèi)存中按先后順序存放。數(shù)組元素在內(nèi)存中按先后順序存放。每個數(shù)組元素都用每個數(shù)組元素都用數(shù)組名數(shù)組名及及下

2、標下標表示。表示。數(shù)組下標從數(shù)組下標從0開始開始每個數(shù)組都有每個數(shù)組都有長度長度,即元素個數(shù)。,即元素個數(shù)。5.2 一維數(shù)組一維數(shù)組n5.2.1 創(chuàng)建一維數(shù)組創(chuàng)建一維數(shù)組n5.2.2 初始化一維數(shù)組初始化一維數(shù)組5.2.1 創(chuàng)建一維數(shù)組創(chuàng)建一維數(shù)組n在使用數(shù)組之前,必須首先定義數(shù)組變量在使用數(shù)組之前,必須首先定義數(shù)組變量所所屬的類型屬的類型,即,即聲明數(shù)組聲明數(shù)組n聲明一維數(shù)組有兩種形式,語法如下所示:聲明一維數(shù)組有兩種形式,語法如下所示:數(shù)組元素類型數(shù)組元素類型 數(shù)組名字數(shù)組名字 ;數(shù)組元素類型數(shù)組元素類型 數(shù)組名字數(shù)組名字;5.2.1 創(chuàng)建一維數(shù)組創(chuàng)建一維數(shù)組n數(shù)組的聲明(數(shù)組的聲明(de

3、claration)聲明數(shù)組時聲明數(shù)組時無需指明數(shù)組元素的個數(shù)無需指明數(shù)組元素的個數(shù),也,也不為數(shù)組元素分配內(nèi)存空間不為數(shù)組元素分配內(nèi)存空間不能直接使用,必須經(jīng)過初始化分配內(nèi)存不能直接使用,必須經(jīng)過初始化分配內(nèi)存后才能使用后才能使用n聲明數(shù)組后,要想使用數(shù)組還要聲明數(shù)組后,要想使用數(shù)組還要為其分配內(nèi)存為其分配內(nèi)存空間,分配內(nèi)存空間時必須指明數(shù)組的長度空間,分配內(nèi)存空間時必須指明數(shù)組的長度。n數(shù)組數(shù)組使用使用new關鍵字關鍵字進行內(nèi)存分配。進行內(nèi)存分配。n分配內(nèi)存空間的語法如下所示:分配內(nèi)存空間的語法如下所示:5.2.1 創(chuàng)建一維數(shù)組創(chuàng)建一維數(shù)組數(shù)組名字數(shù)組名字 = new 數(shù)組元素類型數(shù)組元素

4、類型數(shù)組元素個數(shù)數(shù)組元素個數(shù);n也可以在創(chuàng)建數(shù)組時直接為變量進行賦值。也可以在創(chuàng)建數(shù)組時直接為變量進行賦值。數(shù)組元素類型數(shù)組元素類型 數(shù)組名數(shù)組名 = new數(shù)組元素類型數(shù)組元素類型數(shù)組元素個數(shù)數(shù)組元素個數(shù);5.2.1 創(chuàng)建一維數(shù)組創(chuàng)建一維數(shù)組n用關鍵字用關鍵字new構成數(shù)組的創(chuàng)建表達式,可以構成數(shù)組的創(chuàng)建表達式,可以指定數(shù)組的類型和數(shù)組元素的個數(shù)指定數(shù)組的類型和數(shù)組元素的個數(shù)。n元素個數(shù)可以是常量也可以是變量。元素個數(shù)可以是常量也可以是變量。n基本類型數(shù)組的每個元素都是一個基本類型基本類型數(shù)組的每個元素都是一個基本類型的變量;的變量;n引用類型數(shù)組的每個元素都是對象的引用引用類型數(shù)組的每個元

5、素都是對象的引用。5.2.1 創(chuàng)建一維數(shù)組創(chuàng)建一維數(shù)組arryname=new typecomponets number;例如:例如:int ai; ai=new int10;string s; s=new string3;或者或者可以將數(shù)組的聲明和創(chuàng)建一并執(zhí)行可以將數(shù)組的聲明和創(chuàng)建一并執(zhí)行int ai=new int10;可以在一條聲明語句中創(chuàng)建多個數(shù)組可以在一條聲明語句中創(chuàng)建多個數(shù)組 string s1=new string3, s2=new string8;5.2.2 初始化一維數(shù)組初始化一維數(shù)組n數(shù)組可以與基本數(shù)據(jù)類型一樣進行初始化操數(shù)組可以與基本數(shù)據(jù)類型一樣進行初始化操作,數(shù)組的初始

6、化可分別初始化數(shù)組中每個作,數(shù)組的初始化可分別初始化數(shù)組中每個元素。元素。n數(shù)組的初始化有兩種形式,如下所示:數(shù)組的初始化有兩種形式,如下所示:int arr = new int1,2,3,5,25;int arr2 = 34,23,12,6;5.2.2 初始化一維數(shù)組初始化一維數(shù)組n聲明數(shù)組名時,給出了數(shù)組的初始值聲明數(shù)組名時,給出了數(shù)組的初始值,程序便,程序便會利用數(shù)組初始值創(chuàng)建數(shù)組并對它的各個元素會利用數(shù)組初始值創(chuàng)建數(shù)組并對它的各個元素進行初始化進行初始化 int a=22, 33, 44, 55; n創(chuàng)建數(shù)組的時,如果沒有指定初始值創(chuàng)建數(shù)組的時,如果沒有指定初始值,數(shù)組便,數(shù)組便被賦予

7、默認值初始值。被賦予默認值初始值。 基本類型數(shù)值數(shù)據(jù),默認的初始值為基本類型數(shù)值數(shù)據(jù),默認的初始值為0;boolean類型數(shù)據(jù),默認值為類型數(shù)據(jù),默認值為false; 引用類型元素的默認值為引用類型元素的默認值為null。 數(shù)組的引用數(shù)組的引用 n通過下面的表達式引用數(shù)組的一個元素:通過下面的表達式引用數(shù)組的一個元素:arraynameindex數(shù)組下標必須是數(shù)組下標必須是 int , short, byte, 或者或者 char下標從零開始計數(shù)下標從零開始計數(shù)元素的個數(shù)即為元素的個數(shù)即為數(shù)組的長度數(shù)組的長度,可以通過,可以通過 arryname.length引用引用元素下標最大值為元素下標最

8、大值為length-1,如果超過最,如果超過最大值,將會產(chǎn)生數(shù)組越界異常大值,將會產(chǎn)生數(shù)組越界異常數(shù)組的引用數(shù)組的引用n數(shù)組名是一個引用:數(shù)組名是一個引用:int a1 = 1, 2, 3, 4, 5 ; int a2; a2 = a1; for(int i = 0; i a2.length; i+) a2i+; for(int i = 0; i a1.length; i+) system.out.println( a1 +i+ = +a1i); 數(shù)組元素的賦值:隨機數(shù)數(shù)組元素的賦值:隨機數(shù) 1. 通過通過math類生成隨機數(shù)類生成隨機數(shù)math.random()默認生成默認生成0.0,1.0

9、)的的double型隨機數(shù),型隨機數(shù),即即0 = math.random() 1.0(int)(math.random()*n)m+(int)(math.random()*(n-m)數(shù)組元素的賦值:隨機數(shù)數(shù)組元素的賦值:隨機數(shù) 2. 使用使用random類生成隨機數(shù)類生成隨機數(shù) java.util.random類類random r=new random(); r.nextint( ) /產(chǎn)生一個隨機整數(shù)產(chǎn)生一個隨機整數(shù) r.nextint(int n ) /產(chǎn)生產(chǎn)生 0,n)之間的隨機整數(shù)之間的隨機整數(shù) r.nextfloat( ) /產(chǎn)生一個隨機浮點數(shù)值產(chǎn)生一個隨機浮點數(shù)值 r.nextdo

10、uble ( ) /產(chǎn)生一個隨機雙精度數(shù)值產(chǎn)生一個隨機雙精度數(shù)值常用的數(shù)學運算方法常用的數(shù)學運算方法nmath類包含了所有用于數(shù)學運算的函數(shù)方類包含了所有用于數(shù)學運算的函數(shù)方法,這些方法都是靜態(tài)的法,這些方法都是靜態(tài)的n方法的調(diào)用格式:方法的調(diào)用格式:“math.數(shù)學方法數(shù)學方法”n在在math類中除了函數(shù)方法之外還存在兩個類中除了函數(shù)方法之外還存在兩個常用數(shù)學常量,分別為常用數(shù)學常量,分別為圓周率、圓周率、e:math.pimath.e常用的數(shù)學運算方法常用的數(shù)學運算方法1. 三角函數(shù)類三角函數(shù)類:math.sin(double x)math.cos(double x)math.tan(do

11、uble x)2.指數(shù)函數(shù)類:指數(shù)函數(shù)類:math.exp(double x) /exmath.log(double x) /lnxmath.sqrt(double x) /x1/2math.pow(double x,double y) / xy5.3 二維數(shù)組二維數(shù)組 n5.3.1 創(chuàng)建二維數(shù)組創(chuàng)建二維數(shù)組 n5.3.2 初始化二維數(shù)組初始化二維數(shù)組5.3.1 創(chuàng)建二維數(shù)組創(chuàng)建二維數(shù)組 n聲明二維數(shù)組的方法有兩種,語法:聲明二維數(shù)組的方法有兩種,語法: 數(shù)組元素類型數(shù)組元素類型 數(shù)組名字數(shù)組名字 ; 數(shù)組元素類型數(shù)組元素類型 數(shù)組名字數(shù)組名字;n二維數(shù)組可以看成由多個一維數(shù)組所組成二維數(shù)組可

12、以看成由多個一維數(shù)組所組成,在給二位數(shù)組分配內(nèi)存時,可以為這些一維在給二位數(shù)組分配內(nèi)存時,可以為這些一維數(shù)組同時分配相同的內(nèi)存。數(shù)組同時分配相同的內(nèi)存。n第一個方括號中數(shù)字是一維數(shù)組的個數(shù),第第一個方括號中數(shù)字是一維數(shù)組的個數(shù),第二個方括號中數(shù)字是這些一維數(shù)組的長度。二個方括號中數(shù)字是這些一維數(shù)組的長度。5.3.1 創(chuàng)建二維數(shù)組創(chuàng)建二維數(shù)組對于多維數(shù)組有兩種為數(shù)組分配內(nèi)存的方式。對于多維數(shù)組有兩種為數(shù)組分配內(nèi)存的方式。1)直接為每一維分配內(nèi)存空間。)直接為每一維分配內(nèi)存空間。n為每一維數(shù)組分配內(nèi)存,實例代碼如下:為每一維數(shù)組分配內(nèi)存,實例代碼如下: a = new int24;5.3.1 創(chuàng)建

13、二維數(shù)組創(chuàng)建二維數(shù)組2)可分別為每一維分配內(nèi)存)可分別為每一維分配內(nèi)存n分別為每一維分配內(nèi)存,實例代碼如下:分別為每一維分配內(nèi)存,實例代碼如下:a = new int2;a0 = new int2;a1 = new int3;5.3.2 初始化二維數(shù)組初始化二維數(shù)組n二維數(shù)組的初始化同一維數(shù)組初始化類似,二維數(shù)組的初始化同一維數(shù)組初始化類似,同樣使用同樣使用大括號大括號完成二維數(shù)組的初始化。完成二維數(shù)組的初始化。n語法:語法: type arrayname = value1,value2valuen;每個每個value都是一都是一個大括號定義的個大括號定義的新一維數(shù)組新一維數(shù)組說明:對于整型二

14、維數(shù)組,創(chuàng)建成功之后系說明:對于整型二維數(shù)組,創(chuàng)建成功之后系統(tǒng)會賦給數(shù)組中每個元素初始化值統(tǒng)會賦給數(shù)組中每個元素初始化值0 0。 int myarr = 12,0,45,10;5.4 數(shù)組的基本操作數(shù)組的基本操作 n5.4.1 遍歷數(shù)組遍歷數(shù)組 n5.4.2 復制數(shù)組復制數(shù)組 n5.4.3 填充數(shù)組填充數(shù)組n5.4.4 排序數(shù)組元素排序數(shù)組元素n5.4.5 查找數(shù)組元素查找數(shù)組元素 5.4.1 遍歷數(shù)組遍歷數(shù)組n遍歷數(shù)組有兩種常用的方式,使用遍歷數(shù)組有兩種常用的方式,使用for循環(huán)循環(huán)和使用和使用foreach循環(huán)循環(huán)。n兩者的區(qū)別在于兩者的區(qū)別在于for循環(huán)能夠在遍歷過程中循環(huán)能夠在遍歷過程

15、中修改修改數(shù)組中的元素,而數(shù)組中的元素,而foreach循環(huán)不行。循環(huán)不行。5.4.1 遍歷數(shù)組遍歷數(shù)組【例【例5-1】循環(huán)輸出數(shù)組中的元素】循環(huán)輸出數(shù)組中的元素 int array = new int5;for(int i=0; iarray.length;i+) arrayi = i;system.out.println(數(shù)組中的元素:);for (int i : array) system.out.print(i + );遍歷二維數(shù)組遍歷二維數(shù)組for語句語句n遍歷二維數(shù)組需使用雙層遍歷二維數(shù)組需使用雙層for循環(huán),通過數(shù)組循環(huán),通過數(shù)組的的length屬性屬性可獲得數(shù)組的長度。可獲得數(shù)

16、組的長度。int b = new int 1 , 2, 3 , 4, 5, 6 ; for (int i = 0; i b.length; i+) for (int j=0; j=0,小于小于original數(shù)組元素的個數(shù)。數(shù)組元素的個數(shù)。to:要復制范圍的最后索引位置??梢源笥跀?shù)要復制范圍的最后索引位置??梢源笥跀?shù)組組arr的長度。的長度。新數(shù)組不包括索引是新數(shù)組不包括索引是to的元素。的元素。5.4.2 復制數(shù)組復制數(shù)組【例【例5-2】復制數(shù)組】復制數(shù)組int array = 1, 2, 3, 4 ;int arraycopy=arrays.copyof(array,6); int arr

17、ayrangecopy=arrays. copyofrange(array,2,6); system.out.print(原數(shù)組:);for (int i : array) system.out.print(i + ); system.out.println();5.4.2 復制數(shù)組復制數(shù)組【例【例5-2】復制數(shù)組】復制數(shù)組system.out.print(復制數(shù)組:);for (int i : arraycopy) system.out.print(i + );system.out.println();system.out.print(部分復制數(shù)組:);for (int i : arrayr

18、angecopy) system.out.print(i + );5.4.2 復制數(shù)組復制數(shù)組nsystem提供了一個靜態(tài)方法提供了一個靜態(tài)方法arraycopy(),可,可以用來實現(xiàn)數(shù)組之間的復制。其函數(shù)原型是:以用來實現(xiàn)數(shù)組之間的復制。其函數(shù)原型是:public static void arraycopy(object src, int srcpos,object dest, int destpos, int length)5.4.2 復制數(shù)組復制數(shù)組【例】【例】 arraycopy復制數(shù)組復制數(shù)組char copyfrom= d, e, c, a, f, f, e, i, n, a, t

19、, e, d; char copyto = new char7; system.arraycopy(copyfrom, 2, copyto, 0, 7); system.out.println(new string(copyto);5.4.3 填充數(shù)組填充數(shù)組 njava.util.arrays類中的類中的fill()方法方法可以用來填可以用來填充數(shù)組,即將數(shù)組部分或者全部元素賦值為充數(shù)組,即將數(shù)組部分或者全部元素賦值為某個元素。某個元素。n該類中提供了多種該類中提供了多種fill()方法的重載方法,以方法的重載方法,以int類型數(shù)組為例:類型數(shù)組為例: public static void

20、fill(int a, int val)a:需要填充的數(shù)組。:需要填充的數(shù)組。val:用來填充數(shù)組的元素值。:用來填充數(shù)組的元素值。5.4.3 填充數(shù)組填充數(shù)組【例【例5-4】使用】使用fill()方法將數(shù)組中全部元素賦值方法將數(shù)組中全部元素賦值為為5,然后輸出賦值結果。,然后輸出賦值結果。int array = new int5;arrays.fill(array, 5); system.out.println(數(shù)組中的元素);for (int i : array) system.out.print(i + );5.4.3 填充數(shù)組填充數(shù)組 fill(int a, int from,int

21、to,int value)n該方法將指定的該方法將指定的int值值value分配給分配給int型型數(shù)數(shù)組組a指定范圍中的每個元素。指定范圍中的每個元素。n填充的范圍從索引填充的范圍從索引from(包括包括)一直到索引一直到索引to(不包括不包括)。n如果如果from =to,則填充范圍為空。,則填充范圍為空。5.4.3 填充數(shù)組填充數(shù)組【例】使用【例】使用fill(int a, int from,int to,int value) int arr = new int 45,12,2,10 ;arrays.fill(arr, 1, 2, 8); for (int i = 0; i arr.len

22、gth; i+) system.out.println(第 + i + 個元素是: + arri);5.4.4 排序數(shù)組元素排序數(shù)組元素 n java.util.arrays類中的類中的sort()方法可以用來方法可以用來按按升序排序升序排序數(shù)組,該方法提供了多種重載形數(shù)組,該方法提供了多種重載形式。式。n以以int類型數(shù)組作為參數(shù)的類型數(shù)組作為參數(shù)的sort()方法:方法: public static void sort(int a)a:需要排序的數(shù)組。:需要排序的數(shù)組。5.4.4 排序數(shù)組元素排序數(shù)組元素【例【例5-5】 使用使用sort()方法將降序排列的數(shù)組按方法將降序排列的數(shù)組按升序

23、排列,然后輸出賦值結果。升序排列,然后輸出賦值結果。int array = 5, 4, 3, 2, 1 ;for (int i : array) system.out.print(i + );system.out.println();arrays.sort(array); for (int i : array) system.out.print(i + );5.4.5 查找數(shù)組元素查找數(shù)組元素 njava.util.arrays類中的類中的binarysearch()方法方法可以用來在數(shù)組中查找指定元素,該方法提可以用來在數(shù)組中查找指定元素,該方法提供了多種重載形式。供了多種重載形式。n以以i

24、nt類型數(shù)組為例:類型數(shù)組為例:public static int binarysearch(int a, int key)查找成功,則返回搜索值的索引;查找成功,則返回搜索值的索引;否則返回否則返回-1。5.4.5 查找數(shù)組元素查找數(shù)組元素【例【例5-6】使用】使用sort()方法將降序排列的數(shù)組按方法將降序排列的數(shù)組按升序排列,然后輸出賦值結果。升序排列,然后輸出賦值結果。int array = 5, 4, 3, 2, 1 ;system.out.print(數(shù)組中的元素:);for (int i : array) system.out.print(i + ); system.out.pr

25、intln();arrays.sort(array);int index = arrays.binarysearch(array, 0);system.out.println(元素0的索引值: + index);5.4.5 查找數(shù)組元素查找數(shù)組元素n在指定的范圍之內(nèi),檢索某一元素在指定的范圍之內(nèi),檢索某一元素binarysearch(object a,int fromindex , int toindex,object key)pa:要進行檢索的數(shù)組。:要進行檢索的數(shù)組。pfromindex:指定范圍的開始處索引。:指定范圍的開始處索引。包含包含ptoindex:指定范圍的結束處索引。:指定范

26、圍的結束處索引。不包含不包含pkey:要搜索的元素。:要搜索的元素。5.4.5 查找數(shù)組元素查找數(shù)組元素n在指定的范圍之內(nèi),檢索某一元素在指定的范圍之內(nèi),檢索某一元素string str = new stringab,cd,ef,yz;arrays.sort(str);int index = arrays.binarysearch(str,0,2,cd);system.out.println (索引位置是:+index);數(shù)組的其它操作數(shù)組的其它操作n克隆克隆int array2=array1.clone();n判等判等arrays.equals(array1,array2);n返回指定數(shù)組內(nèi)容的字符串返回指定數(shù)組內(nèi)容的字符串a(chǎn)rrays.tostring();將數(shù)組內(nèi)容放在將數(shù)組內(nèi)容放在 中,用中,用“,”隔開。隔開。冒泡排序冒泡排序int array = 31, 21

溫馨提示

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

最新文檔

評論

0/150

提交評論