Java程序設計-4-數(shù)組_第1頁
Java程序設計-4-數(shù)組_第2頁
Java程序設計-4-數(shù)組_第3頁
Java程序設計-4-數(shù)組_第4頁
Java程序設計-4-數(shù)組_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第四章第四章 數(shù)組數(shù)組1學習目標學習目標理解數(shù)組的作用理解數(shù)組的作用掌握數(shù)組的聲明和初始化特點掌握數(shù)組的聲明和初始化特點能夠通過下標訪問數(shù)組中的單個元素能夠通過下標訪問數(shù)組中的單個元素如何利用如何利用JDKJDK提供的數(shù)組操作方法提供的數(shù)組操作方法理解程序接收參數(shù)的過程,靈活運用理解程序接收參數(shù)的過程,靈活運用mainmain的參的參數(shù)實現(xiàn)和程序交互數(shù)實現(xiàn)和程序交互掌握多維數(shù)組的聲明和應用掌握多維數(shù)組的聲明和應用234.1 4.1 數(shù)組數(shù)組 數(shù)組的作用在于提供了一種用來處理一組同類型數(shù)組的作用在于提供了一種用來處理一組同類型數(shù)據(jù)的存儲和訪問機制,因為在實際編程中,你數(shù)據(jù)的存儲和訪問機制,因為在

2、實際編程中,你無法為每一個這樣的數(shù)據(jù)聲明一個變量。無法為每一個這樣的數(shù)據(jù)聲明一個變量。在在JavaJava語言中,數(shù)組元素可以是基本類型,也可語言中,數(shù)組元素可以是基本類型,也可是對象。實際上,是對象。實際上,JavaJava認為數(shù)組本身也是一個對認為數(shù)組本身也是一個對象。象。 44.1.1 4.1.1 數(shù)組的聲明數(shù)組的聲明傳統(tǒng)方式傳統(tǒng)方式uint score;uchar s ;uPoint p ,q; / Point/ Point是一個類類型是一個類類型, ,此處聲明了兩個數(shù)組此處聲明了兩個數(shù)組現(xiàn)代方式現(xiàn)代方式uchar s;uPoint p, q; 54.1.2 4.1.2 創(chuàng)建數(shù)組創(chuàng)建數(shù)

3、組數(shù)組聲明后并不是就可以直接使用了,要想使用必須數(shù)組聲明后并不是就可以直接使用了,要想使用必須要實際創(chuàng)建數(shù)組,為它分配實際的存儲空間,然后才要實際創(chuàng)建數(shù)組,為它分配實際的存儲空間,然后才能存儲元素。能存儲元素。us = new char 20 ;up = new Point 100 ; 也可在也可在運行運行時,用變量表示數(shù)組的大小。時,用變量表示數(shù)組的大小。uint a;uint len=10;ua=new intlen;注意:數(shù)組的大小一旦指定,就不可更改。注意:數(shù)組的大小一旦指定,就不可更改。64.1.3 4.1.3 初始化數(shù)組初始化數(shù)組初始化解決了當數(shù)組空間被分配時,如何填充空間的問初始

4、化解決了當數(shù)組空間被分配時,如何填充空間的問題,而且預防了沒有賦值就訪問數(shù)組元素導致意外的情題,而且預防了沒有賦值就訪問數(shù)組元素導致意外的情況。況。1.1.當創(chuàng)建一個數(shù)組時,每個元素都將被默認初始化。當創(chuàng)建一個數(shù)組時,每個元素都將被默認初始化。u在上述在上述charchar數(shù)組數(shù)組s s的例子中,每個值都被初始化為的例子中,每個值都被初始化為0 0 (u0000-null)(u0000-null)字符;字符;u數(shù)值類型的數(shù)組元素默認值為數(shù)值類型的數(shù)組元素默認值為0 0ubooleanboolean類型的數(shù)組元素默認值為類型的數(shù)組元素默認值為falsefalseu對象類型的數(shù)組元素默認值為對象類

5、型的數(shù)組元素默認值為nullnullu在數(shù)組在數(shù)組p p的例子中的例子中, , 每個值都被初始化為每個值都被初始化為nullnull,表明它還未引用一,表明它還未引用一個個PointPoint對象。在經(jīng)過賦值對象。在經(jīng)過賦值 p p 0 0 = new Point() = new Point()之后,數(shù)組的第一之后,數(shù)組的第一個元素引用為實際個元素引用為實際PointPoint對象。對象。 72. Java2. Java編程語言允許使用下列形式快速創(chuàng)建數(shù)組編程語言允許使用下列形式快速創(chuàng)建數(shù)組, ,并完并完成初始化任務成初始化任務: :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 訪問數(shù)組訪問數(shù)組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 訪問數(shù)組訪問數(shù)組cont.cont.注意:注意:u1.1.在在JavaJava編程語言中,所有數(shù)組的下標都從編程語言中,所有數(shù)組的下標都從0 0開開始。訪問數(shù)組元素可以通過下標進行,如始。訪問數(shù)組元素可以通過下標進行,如a5a5或或者者aiai. .u2.2.一個數(shù)組中元素的數(shù)量被作為具有一個數(shù)組中

8、元素的數(shù)量被作為具有l(wèi)engthlength屬屬性的部分而被數(shù)組對象存儲性的部分而被數(shù)組對象存儲; ; 這個值被用來檢查這個值被用來檢查所有運行時訪問的界限。如果發(fā)生了一個越出界所有運行時訪問的界限。如果發(fā)生了一個越出界限的訪問,那么運行時的報錯(限的訪問,那么運行時的報錯(異常異常)也就出現(xiàn))也就出現(xiàn)了了. .104.1.4 4.1.4 訪問數(shù)組訪問數(shù)組cont.cont.存儲元素到數(shù)組存儲元素到數(shù)組uint a=new int10;int a=new int10;ua0=10;a0=10;ua5=2;a5=2;ua7=8;a7=8;11小結:小結:數(shù)組就是一個具有固定長度的包容多個相同類型

9、對象數(shù)組就是一個具有固定長度的包容多個相同類型對象的數(shù)據(jù)結構。它的元素類型甚至可以是數(shù)組。的數(shù)據(jù)結構。它的元素類型甚至可以是數(shù)組。數(shù)組的聲明、創(chuàng)建和初始化可以分別完成,也可以一數(shù)組的聲明、創(chuàng)建和初始化可以分別完成,也可以一次完成。次完成。用來指示單個數(shù)組元素的下標必須總是從用來指示單個數(shù)組元素的下標必須總是從0 0開始。開始。數(shù)組一旦創(chuàng)建后,其大小不可調(diào)整。數(shù)組一旦創(chuàng)建后,其大小不可調(diào)整??梢杂脭?shù)組對象的可以用數(shù)組對象的lengthlength屬性來獲得該數(shù)組可以容納屬性來獲得該數(shù)組可以容納的元素個數(shù)。的元素個數(shù)??梢酝ㄟ^下標(整數(shù)數(shù)值或整型變量)來引用數(shù)組內(nèi)可以通過下標(整數(shù)數(shù)值或整型變量)

10、來引用數(shù)組內(nèi)的指定位置的元素,下標不能超出數(shù)組元素個數(shù)。的指定位置的元素,下標不能超出數(shù)組元素個數(shù)。 可使用相同的引用變量來引用一個全新的數(shù)組。可使用相同的引用變量來引用一個全新的數(shù)組。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數(shù)組中的每個元素都是同樣的類型數(shù)組中的每個元素都是同樣的類型u數(shù)組的大小在聲明之后就是固定的了數(shù)組的大小在聲明之后就是固定的了u數(shù)組的大小在創(chuàng)建后確定數(shù)組的大小在創(chuàng)建后確定u數(shù)組的元素必須是基本類型的數(shù)組的元素必須是基本類型的14課堂練習課堂練習(cont.)(cont.)下面哪一個語句是有效的數(shù)組聲明?下面哪一個語句是有效的數(shù)組聲明?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說出下面數(shù)組第說出下面數(shù)組第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使用增強型循環(huán)訪問數(shù)組元素使用增強型循環(huán)訪問數(shù)組元素16 for(目標數(shù)組元素的類型目標數(shù)組元素的類型 變量名變量名:目標數(shù)組名目標數(shù)組名)int score = new int5;for (int x : score) System.out.print(x+,);4.2 main4.2 main方法中的參數(shù)方法中的參數(shù)命令

14、行的參數(shù)命令行的參數(shù)umainmain方法聲明中的參數(shù)類型是一個字符串數(shù)組方法聲明中的參數(shù)類型是一個字符串數(shù)組u運行時,存放接收的命令行參數(shù)運行時,存放接收的命令行參數(shù)uJavaJava程序?qū)⒔邮盏牡谝粋€參數(shù)存放在下標為程序?qū)⒔邮盏牡谝粋€參數(shù)存放在下標為0 0的位置,第二個參數(shù)存放在下標為的位置,第二個參數(shù)存放在下標為1 1的位置,的位置,其它的以此類推。其它的以此類推。17/程序4-2:運行時參數(shù)的應用public class CommandParameters public static void main(String args) for(int i=0;iargs.length;i+)

15、 System.out.printf(第%d個輸入的參數(shù)是%sn, i,argsi); 184.3 4.3 多維數(shù)組多維數(shù)組1 1多維數(shù)組多維數(shù)組 uJavaJava編程語言沒有像其它語言那樣提供多維數(shù)編程語言沒有像其它語言那樣提供多維數(shù)組,因為一個數(shù)組可被聲明為具有任何基礎類組,因為一個數(shù)組可被聲明為具有任何基礎類型,所以你可以創(chuàng)建數(shù)組的數(shù)組型,所以你可以創(chuàng)建數(shù)組的數(shù)組( (和數(shù)組的數(shù)組和數(shù)組的數(shù)組的數(shù)組,等等的數(shù)組,等等) )。 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;上述數(shù)組的聲明也可以修改為:上述數(shù)組的聲明也可以修改為:uint twoDim = new int45;int twoDim = new int45;192.2.不規(guī)則的多維數(shù)組不規(guī)則的多維數(shù)組 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 盡管多維數(shù)組的聲明格式,允許方括號在變量名盡管多維數(shù)組的聲明格式,允許方括號在變量名左邊或者右邊,但此種靈活性不適用于數(shù)組句法左邊或者右邊,但此種靈活性不適用于數(shù)組句法的其它方面。例如的其它方面。例如: new int : new int 4 4 是非法的,因是非法的,因為這樣的聲明,

18、編譯器無法預先為之分配空間。為這樣的聲明,編譯器無法預先為之分配空間。 4. 4. 多維數(shù)組的初始化多維數(shù)組的初始化u 類似一維數(shù)組的初始化,多維數(shù)組的初始化即可類似一維數(shù)組的初始化,多維數(shù)組的初始化即可以在聲明時直接初始化,也可以在創(chuàng)建時初始化。以在聲明時直接初始化,也可以在創(chuàng)建時初始化。下面的例子演示了在聲明時直接對數(shù)組進行初始下面的例子演示了在聲明時直接對數(shù)組進行初始化:化:u int factors = 2, 3, 2, 4, 5, int factors = 2, 3, 2, 4, 5, 2, 3, 6, 7; 2, 3, 6, 7; 21課堂練習課堂練習聲明并創(chuàng)建一個如下數(shù)組。聲明

19、并創(chuàng)建一個如下數(shù)組。u包含包含3 3行,每行分別包含不同數(shù)目元素,元素行,每行分別包含不同數(shù)目元素,元素數(shù)依次為數(shù)依次為 5 5,4 4,6 6編寫一個程序,逐個輸出該數(shù)組的每個元素的編寫一個程序,逐個輸出該數(shù)組的每個元素的默認初始值。默認初始值。224.4 4.4 操作數(shù)組復制、排序和查找操作數(shù)組復制、排序和查找復制:在數(shù)組內(nèi)查找一個具體的值,或者將一復制:在數(shù)組內(nèi)查找一個具體的值,或者將一個數(shù)組復制到另一個數(shù)組等。個數(shù)組復制到另一個數(shù)組等。u SystemSystem類提供的方法類提供的方法arraycopy()arraycopy(),程序,程序排序和查找排序和查找ArraysArrays

20、類提供的主要方法類提供的主要方法u sort(.)sort(.)升序排列升序排列u binarySearch(.)binarySearch(.)使用折半搜索算法來搜索指使用折半搜索算法來搜索指定類型的有序數(shù)組定類型的有序數(shù)組u fill(.)fill(.)用指定類型的值填充同類型的數(shù)組用指定類型的值填充同類型的數(shù)組u 程序程序23public class ArrayCopy public static void main(String args) / 原始數(shù)組 int myArray = 1, 2, 3, 4, 5, 6 ; / 一個更大的數(shù)組 int hold = 10, 9, 8, 7,

21、6, 5, 4, 3, 2, 1 ; /* 復制myArray數(shù)組的所有內(nèi)容到hold數(shù)組, * 放在hold數(shù)組下標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); /對數(shù)組a升序排列 for(int element : a)System.out.println

22、(element); int loc=Arrays.binarySearch(a,5);/查找元素5 System.out.println(數(shù)值5在下標+loc+的位置);25課堂練習課堂練習聲明一個整型數(shù)組,其初始值是:聲明一個整型數(shù)組,其初始值是:1 1,4 4,5656,8 8,9 9;聲明一個雙精度類型的數(shù)組,其初始值是:聲明一個雙精度類型的數(shù)組,其初始值是: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 請問數(shù)組的長度,以及有效索引范圍各是多少?請問數(shù)組的長度,以及有效索引范圍各是多少?u 請問索引為請問索引為3 3的位置存放的元素值是多少?的位置存放的元素值是多少?聲明一個字符型數(shù)組,包含聲明一個字符型數(shù)組,包含2020個元素,并給其前個元素,并給其前2 2個個元素賦值字符:元素賦值字符:a a,b b聲明一個字符串型數(shù)組,包含聲明一個字符串型數(shù)組,包含1010個元素,并給其前個元素,并給其前2 2個元素賦值字符串:個元素賦值字符串:abcabc,bcdbcd聲

溫馨提示

  • 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

提交評論