




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第四章第四章 數組數組1學習目標學習目標理解數組的作用理解數組的作用掌握數組的聲明和初始化特點掌握數組的聲明和初始化特點能夠通過下標訪問數組中的單個元素能夠通過下標訪問數組中的單個元素如何利用如何利用JDKJDK提供的數組操作方法提供的數組操作方法理解程序接收參數的過程,靈活運用理解程序接收參數的過程,靈活運用mainmain的參的參數實現和程序交互數實現和程序交互掌握多維數組的聲明和應用掌握多維數組的聲明和應用234.1 4.1 數組數組 數組的作用在于提供了一種用來處理一組同類型數組的作用在于提供了一種用來處理一組同類型數據的存儲和訪問機制,因為在實際編程中,你數據的存儲和訪問機制,因為在
2、實際編程中,你無法為每一個這樣的數據聲明一個變量。無法為每一個這樣的數據聲明一個變量。在在JavaJava語言中,數組元素可以是基本類型,也可語言中,數組元素可以是基本類型,也可是對象。實際上,是對象。實際上,JavaJava認為數組本身也是一個對認為數組本身也是一個對象。象。 44.1.1 4.1.1 數組的聲明數組的聲明傳統方式傳統方式uint score;uchar s ;uPoint p ,q; / Point/ Point是一個類類型是一個類類型, ,此處聲明了兩個數組此處聲明了兩個數組現代方式現代方式uchar s;uPoint p, q; 54.1.2 4.1.2 創建數組創建數
3、組數組聲明后并不是就可以直接使用了,要想使用必須數組聲明后并不是就可以直接使用了,要想使用必須要實際創建數組,為它分配實際的存儲空間,然后才要實際創建數組,為它分配實際的存儲空間,然后才能存儲元素。能存儲元素。us = new char 20 ;up = new Point 100 ; 也可在也可在運行運行時,用變量表示數組的大小。時,用變量表示數組的大小。uint a;uint len=10;ua=new intlen;注意:數組的大小一旦指定,就不可更改。注意:數組的大小一旦指定,就不可更改。64.1.3 4.1.3 初始化數組初始化數組初始化解決了當數組空間被分配時,如何填充空間的問初始
4、化解決了當數組空間被分配時,如何填充空間的問題,而且預防了沒有賦值就訪問數組元素導致意外的情題,而且預防了沒有賦值就訪問數組元素導致意外的情況。況。1.1.當創建一個數組時,每個元素都將被默認初始化。當創建一個數組時,每個元素都將被默認初始化。u在上述在上述charchar數組數組s s的例子中,每個值都被初始化為的例子中,每個值都被初始化為0 0 (u0000-null)(u0000-null)字符;字符;u數值類型的數組元素默認值為數值類型的數組元素默認值為0 0ubooleanboolean類型的數組元素默認值為類型的數組元素默認值為falsefalseu對象類型的數組元素默認值為對象類
5、型的數組元素默認值為nullnullu在數組在數組p p的例子中的例子中, , 每個值都被初始化為每個值都被初始化為nullnull,表明它還未引用一,表明它還未引用一個個PointPoint對象。在經過賦值對象。在經過賦值 p p 0 0 = new Point() = new Point()之后,數組的第一之后,數組的第一個元素引用為實際個元素引用為實際PointPoint對象。對象。 72. Java2. Java編程語言允許使用下列形式快速創建數組編程語言允許使用下列形式快速創建數組, ,并完并完成初始化任務成初始化任務: :uString names = String names =
6、 u “GeorgiannaGeorgianna”, ,u “JenJen”, ,u “SimonSimon”u ; ;其結果與下列代碼等同:其結果與下列代碼等同:uString names ;String names ;unames = new String names = new String 3 3 ; ;unames names 0 0 = = “GeorgiannaGeorgianna”; ;unames names 1 1 = = “JenJen”; ;unames names 2 2 = = “SimonSimon”; ;84.1.4 4.1.4 訪問數組訪問數組public c
7、lass ArrayAccessDemo public static void main(String args) int a=1,3,7,2,6,5; for(int i=0;ia.length;i+) System.out.println(第+i+個元素值為+ai); 94.1.4 4.1.4 訪問數組訪問數組cont.cont.注意:注意:u1.1.在在JavaJava編程語言中,所有數組的下標都從編程語言中,所有數組的下標都從0 0開開始。訪問數組元素可以通過下標進行,如始。訪問數組元素可以通過下標進行,如a5a5或或者者aiai. .u2.2.一個數組中元素的數量被作為具有一個數組中
8、元素的數量被作為具有lengthlength屬屬性的部分而被數組對象存儲性的部分而被數組對象存儲; ; 這個值被用來檢查這個值被用來檢查所有運行時訪問的界限。如果發生了一個越出界所有運行時訪問的界限。如果發生了一個越出界限的訪問,那么運行時的報錯(限的訪問,那么運行時的報錯(異常異常)也就出現)也就出現了了. .104.1.4 4.1.4 訪問數組訪問數組cont.cont.存儲元素到數組存儲元素到數組uint a=new int10;int a=new int10;ua0=10;a0=10;ua5=2;a5=2;ua7=8;a7=8;11小結:小結:數組就是一個具有固定長度的包容多個相同類型
9、對象數組就是一個具有固定長度的包容多個相同類型對象的數據結構。它的元素類型甚至可以是數組。的數據結構。它的元素類型甚至可以是數組。數組的聲明、創建和初始化可以分別完成,也可以一數組的聲明、創建和初始化可以分別完成,也可以一次完成。次完成。用來指示單個數組元素的下標必須總是從用來指示單個數組元素的下標必須總是從0 0開始。開始。數組一旦創建后,其大小不可調整。數組一旦創建后,其大小不可調整。可以用數組對象的可以用數組對象的lengthlength屬性來獲得該數組可以容納屬性來獲得該數組可以容納的元素個數。的元素個數。可以通過下標(整數數值或整型變量)來引用數組內可以通過下標(整數數值或整型變量)
10、來引用數組內的指定位置的元素,下標不能超出數組元素個數。的指定位置的元素,下標不能超出數組元素個數。 可使用相同的引用變量來引用一個全新的數組。可使用相同的引用變量來引用一個全新的數組。12課堂練習課堂練習寫出下面程序的運行結果寫出下面程序的運行結果class Happy public static void main(String args) int index=1; int a =new int3; int bas =aindex; int baz =bas + index System.out.println( abaz ); 13課堂練習課堂練習(cont.)(cont.)判斷正確判斷
11、正確u數組中的每個元素都是同樣的類型數組中的每個元素都是同樣的類型u數組的大小在聲明之后就是固定的了數組的大小在聲明之后就是固定的了u數組的大小在創建后確定數組的大小在創建后確定u數組的元素必須是基本類型的數組的元素必須是基本類型的14課堂練習課堂練習(cont.)(cont.)下面哪一個語句是有效的數組聲明?下面哪一個語句是有效的數組聲明?uint i= new int(30);int i= new int(30);udouble d = new double30;double d = new double30;uPoint p= new Point(1.30);Point p= new P
12、oint(1.30);uint i =(3,4,5,7);int i =(3,4,5,7);uchar c = new char();char c = new char();ufloat f=1.0f,1.5f,4.6f;float f=1.0f,1.5f,4.6f;udouble d = new float30;double d = new float30;15說出下面數組第說出下面數組第3 3個元素的值個元素的值uint a = 1,3,6,7,8;int a = 1,3,6,7,8;uboolean b = new boolean10;boolean b = new boolean10;
13、ufloat f=1.4f,5.6f,7.0f,2.5f,3.6f;float f=1.4f,5.6f,7.0f,2.5f,3.6f;udouble d=new double10;double d=new double10;ulong l;long l;4.1.54.1.5使用增強型循環訪問數組元素使用增強型循環訪問數組元素16 for(目標數組元素的類型目標數組元素的類型 變量名變量名:目標數組名目標數組名)int score = new int5;for (int x : score) System.out.print(x+,);4.2 main4.2 main方法中的參數方法中的參數命令
14、行的參數命令行的參數umainmain方法聲明中的參數類型是一個字符串數組方法聲明中的參數類型是一個字符串數組u運行時,存放接收的命令行參數運行時,存放接收的命令行參數uJavaJava程序將接收的第一個參數存放在下標為程序將接收的第一個參數存放在下標為0 0的位置,第二個參數存放在下標為的位置,第二個參數存放在下標為1 1的位置,的位置,其它的以此類推。其它的以此類推。17/程序4-2:運行時參數的應用public class CommandParameters public static void main(String args) for(int i=0;iargs.length;i+)
15、 System.out.printf(第%d個輸入的參數是%sn, i,argsi); 184.3 4.3 多維數組多維數組1 1多維數組多維數組 uJavaJava編程語言沒有像其它語言那樣提供多維數編程語言沒有像其它語言那樣提供多維數組,因為一個數組可被聲明為具有任何基礎類組,因為一個數組可被聲明為具有任何基礎類型,所以你可以創建數組的數組型,所以你可以創建數組的數組( (和數組的數組和數組的數組的數組,等等的數組,等等) )。 uint twoDim = new int 4int twoDim = new int 4; ;utwoDim0 = new int5;twoDim0 = new
16、 int5;utwoDim1 = new int5;twoDim1 = new int5;utwoDim2 = new int5;twoDim2 = new int5;utwoDim3 = new int5;twoDim3 = new int5;上述數組的聲明也可以修改為:上述數組的聲明也可以修改為:uint twoDim = new int45;int twoDim = new int45;192.2.不規則的多維數組不規則的多維數組 u int twoDim = new int4;int twoDim = new int4;u twoDim0 = new int 2;twoDim0 = n
17、ew int 2;u twoDim1 = new int 4;twoDim1 = new int 4;u twoDim2 = new int 6;twoDim2 = new int 6;u twoDim3 = new int 8;twoDim3 = new int 8;203.3.一種非法的聲明一種非法的聲明u 盡管多維數組的聲明格式,允許方括號在變量名盡管多維數組的聲明格式,允許方括號在變量名左邊或者右邊,但此種靈活性不適用于數組句法左邊或者右邊,但此種靈活性不適用于數組句法的其它方面。例如的其它方面。例如: new int : new int 4 4 是非法的,因是非法的,因為這樣的聲明,
18、編譯器無法預先為之分配空間。為這樣的聲明,編譯器無法預先為之分配空間。 4. 4. 多維數組的初始化多維數組的初始化u 類似一維數組的初始化,多維數組的初始化即可類似一維數組的初始化,多維數組的初始化即可以在聲明時直接初始化,也可以在創建時初始化。以在聲明時直接初始化,也可以在創建時初始化。下面的例子演示了在聲明時直接對數組進行初始下面的例子演示了在聲明時直接對數組進行初始化:化:u int factors = 2, 3, 2, 4, 5, int factors = 2, 3, 2, 4, 5, 2, 3, 6, 7; 2, 3, 6, 7; 21課堂練習課堂練習聲明并創建一個如下數組。聲明
19、并創建一個如下數組。u包含包含3 3行,每行分別包含不同數目元素,元素行,每行分別包含不同數目元素,元素數依次為數依次為 5 5,4 4,6 6編寫一個程序,逐個輸出該數組的每個元素的編寫一個程序,逐個輸出該數組的每個元素的默認初始值。默認初始值。224.4 4.4 操作數組復制、排序和查找操作數組復制、排序和查找復制:在數組內查找一個具體的值,或者將一復制:在數組內查找一個具體的值,或者將一個數組復制到另一個數組等。個數組復制到另一個數組等。u SystemSystem類提供的方法類提供的方法arraycopy()arraycopy(),程序,程序排序和查找排序和查找ArraysArrays
20、類提供的主要方法類提供的主要方法u sort(.)sort(.)升序排列升序排列u binarySearch(.)binarySearch(.)使用折半搜索算法來搜索指使用折半搜索算法來搜索指定類型的有序數組定類型的有序數組u fill(.)fill(.)用指定類型的值填充同類型的數組用指定類型的值填充同類型的數組u 程序程序23public class ArrayCopy public static void main(String args) / 原始數組 int myArray = 1, 2, 3, 4, 5, 6 ; / 一個更大的數組 int hold = 10, 9, 8, 7,
21、6, 5, 4, 3, 2, 1 ; /* 復制myArray數組的所有內容到hold數組, * 放在hold數組下標0開始的位置 */System.arraycopy(myArray, 0, hold, 0, myArray.length); 24import java.util.Arrays;public class ArrayDemo public static void main(String args) int a=10,7,9,2,4,5,1,3,6,8;Arrays.sort(a); /對數組a升序排列 for(int element : a)System.out.println
22、(element); int loc=Arrays.binarySearch(a,5);/查找元素5 System.out.println(數值5在下標+loc+的位置);25課堂練習課堂練習聲明一個整型數組,其初始值是:聲明一個整型數組,其初始值是:1 1,4 4,5656,8 8,9 9;聲明一個雙精度類型的數組,其初始值是:聲明一個雙精度類型的數組,其初始值是:1.01.0,10.510.5,1212,7.27.2,20.420.4給出如下的聲明給出如下的聲明u float f = 1,2,3,4,5;float f = 1,2,3,4,5;u 請問數組的長度,以及有效索引范圍各是多少?請問數組的長度,以及有效索引范圍各是多少?u 請問索引為請問索引為3 3的位置存放的元素值是多少?的位置存放的元素值是多少?聲明一個字符型數組,包含聲明一個字符型數組,包含2020個元素,并給其前個元素,并給其前2 2個個元素賦值字符:元素賦值字符:a a,b b聲明一個字符串型數組,包含聲明一個字符串型數組,包含1010個元素,并給其前個元素,并給其前2 2個元素賦值字符串:個元素賦值字符串:abcabc,bcdbcd聲
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025供需合同樣本范文
- 2025年飲料代理銷售合同書范本
- 2025年汽車租賃合同模板版
- 眼部膿腫個案護理
- 黑龍江省哈爾濱市第九中學校2024-2025學年高二上學期期末考試生物試題 含解析
- 流體力學與醫學的交叉應用
- 河北省石家莊市部分校滄州市2024-2025學年高一年級下學期期中考試語文試題
- 人教版小學語文三年級下冊第三單元測試題
- 小學音樂課教學心得體會模版
- 【FCMConsulting】2024年第一季度全球旅行趨勢報告224mb
- 9.1日益完善的法律體系 課件 -2024-2025學年統編版道德與法治七年級下冊
- 分級保護技術標準bmb17-2024
- 土地共同使用協議書
- 物流公司安全生產自查報告范文
- 全媒體運營師數據分析考題
- 全球化的背景下企業國際化戰略研究
- 事故應急池管理制度
- 公司安全考核試題及答案
- 第18課 清朝的邊疆治理 教案2024-2025學年七年級歷史下冊新課標
- 2025年中職思政試題及答案
- 2025年兵團職工考試試題及答案
評論
0/150
提交評論