《Java程序設(shè)計及應(yīng)用》課件02-2_第1頁
《Java程序設(shè)計及應(yīng)用》課件02-2_第2頁
《Java程序設(shè)計及應(yīng)用》課件02-2_第3頁
《Java程序設(shè)計及應(yīng)用》課件02-2_第4頁
《Java程序設(shè)計及應(yīng)用》課件02-2_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

內(nèi)容提要基本類型的類型轉(zhuǎn)換強制類型轉(zhuǎn)換自動類型轉(zhuǎn)換數(shù)組使用數(shù)組的基本步驟步驟組合多維數(shù)組數(shù)組處理工具數(shù)組的優(yōu)缺點教學(xué)要求1.正確理解類型轉(zhuǎn)換機制并能夠熟練編程處理。2.理解數(shù)組的原理,并能夠熟練使用數(shù)組進行編程。1基本類型的類型轉(zhuǎn)換類型轉(zhuǎn)換的必要性在實際編程過程中經(jīng)常需要把一種類型的數(shù)據(jù)賦給另一種類型的變量,或者對不同類型的數(shù)據(jù)進行運算,這時就需要進行類型的轉(zhuǎn)換。強制類型轉(zhuǎn)換也稱為顯式類型轉(zhuǎn)換,當被轉(zhuǎn)換數(shù)據(jù)的類型取值范圍大于目標類型的取值范圍時,就需要進行強制類型轉(zhuǎn)換,其語法格式如下:(目標類型)被轉(zhuǎn)換的數(shù)據(jù)舉例:intk=3;

byteb=(byte)k;強制類型轉(zhuǎn)換注意事項強制類型轉(zhuǎn)換是從高類型向低類型轉(zhuǎn)換,轉(zhuǎn)換后的結(jié)果可能會出現(xiàn)兩個問題:(1)精度損失。浮點型→整型,則小數(shù)丟失,例如intb=(int)12.12。(2)溢出問題。當被轉(zhuǎn)換數(shù)據(jù)超出了目標類型的取值范圍時會發(fā)生溢出問題,例如byteb=(byte)123456789.12。自動類型轉(zhuǎn)換自動類型轉(zhuǎn)換也稱為隱式類型轉(zhuǎn)換,在8個基本類型中只有數(shù)值型的數(shù)據(jù)能夠進行自動類型轉(zhuǎn)換,且源數(shù)據(jù)的類型取值范圍小于目標類型的取值范圍,即

byte<short <int<long<float<double

(*)char <int<long<float<double(*)按照從左到右的順序能夠進行自動轉(zhuǎn)換。類型轉(zhuǎn)換注意事項(1)無論是自動轉(zhuǎn)換還是強制轉(zhuǎn)換,轉(zhuǎn)換的只是變量或者表達式的“讀出值”,而變量或者表達式自身的類型和值都未被改變。(2)自動類型轉(zhuǎn)換順序(*)中注意short和char雖然都占用16bits,但地位不是對等的,例如:1bytea=97;

2shorts=a;//該行正確,發(fā)生了類型自動轉(zhuǎn)換

3charc=97;//該行正確,變量c的值是字符'a'

4c=a;//該行編譯不通過,原因可能是損失精度

5c=s;注意事項(續(xù))(3)int類型轉(zhuǎn)換為float,當有效數(shù)字個數(shù)超過8個;或者將long類型轉(zhuǎn)換為double,當有效數(shù)字個數(shù)超過18個,就會發(fā)生精度損失,例如:inti=1234567890;

floatf=i;//此時f=1.23456794E9,而不是1234567890.0(4)由float向double類型轉(zhuǎn)換時,如果使用了關(guān)鍵字strictfp,則精度不會有損失,否則精度可能有損失。2數(shù)組數(shù)組的概念數(shù)組是一種集合數(shù)據(jù)類型,它是由類型相同的數(shù)據(jù)組成的有序數(shù)據(jù)集合,在Java中數(shù)組是對象,繼承了Object類并實現(xiàn)了Cloneable、java.io.Serializable接口,從而Object中的方法可被繼承到數(shù)組中使用。數(shù)組的變成步驟聲明分配空間初始化2.1聲明數(shù)組語法格式為:datatype[]varName;

datatypevarName[];//也可以把[]放在varName的后面注:[]的前后可以有零個、一個或多個空格。其中的datatype可以是基本數(shù)據(jù)類型(8個),也可以是引用類型(包括類、抽象類、接口)。例如:int[]a;

int[]b;

Stringc[];

Objectd[];方括號[]在數(shù)組變量名的前后都可以,建議采用在變量名前的方式。2.2分配空間語法格式為:變量名=new類型[數(shù)組長度];例如:a=newint[3];//分配了3個內(nèi)存空間

b=newint[4];

c=newString[2];只有創(chuàng)建Java對象時才使用new關(guān)鍵字,從這一點也可看出,數(shù)組是Java對象。2.3初始化初始化就是為數(shù)組的成員賦初始值,一般采用for循環(huán),例如:for(inti=0;i<a.length;i++){//盡量不要采用i<3,應(yīng)盡量采用a.length

a[i]=2;

}注意數(shù)組的索引(index)是從0開始的,索引的類型是int,故byte、short、char、int類型的變量可以作為索引變量使用。a.length是使用了數(shù)組對象的length屬性,length的值是在分配空間階段由系統(tǒng)根據(jù)分配空間的大小來自動賦值的。對數(shù)組的越界訪問是不允許的,雖然編譯代碼沒有問題,但運行過程中Java會進行是否越界訪問檢查,一旦發(fā)現(xiàn)越界訪問,則拋出ArrayIndexOutOfBoundsException異常,關(guān)于異常處理請詳見第5章數(shù)組使用的組合上述三個步驟是使用數(shù)組編程的三個基本步驟,這三個步驟可以組合在一起,其組合方式有:2.1+2.22.2+2.32.1+2.2+2.3

組合:2.1+2.2語法為:類型[]變量名=new類型[數(shù)組長度];類型變量名[]=new類型[數(shù)組長度];//也可以這樣例如:int[]a=newint[3];

intb[]=newint[4];組合:2.2+2.3語法為:變量名=new類型[]{值1,值2,...,值n};類型[]變量名={值1,值2,...,值n};例如:a=newint[]{1,2,3};//這稱為動態(tài)創(chuàng)建數(shù)組

b={1,2,4,3};//這稱為靜態(tài)創(chuàng)建數(shù)組組合:2.1+2.2+2.3語法為:類型[]變量名=new類型[]{值1,值2,..,值n};類型[]變量名={值1,值2,..,值n};例如:int[]a=newint[]{1,2,3};

int[]b=newint[3]{1,2,3};//錯誤

doubled={1.1,2.1,3.0};多維數(shù)組Java并不存在真正的多維數(shù)組,所謂的多維數(shù)組是由多個一維數(shù)組嵌套合成的,即把多維數(shù)組看作是數(shù)組的數(shù)組,使用這種方法把多維數(shù)組逐一分解,直到分解成一維數(shù)組為止。這種機制使得Java多維數(shù)組具有很強的靈活性。多維數(shù)組編程同樣遵循前面介紹的三個基本步驟,其組合方式同樣適用于多維數(shù)組。多維數(shù)組例程1/*聲明*/

2int[][]a;

3int[]b[];

4intc[][];

5int[][]d;

6

7/*分配空間*/

8a=newint[2][3];//2行3列

9

10/*下面代碼只分配了3行,沒有分配列,此時b是一維數(shù)組,

11*其長度為3,而b的每個元素又是一維數(shù)組,其空間還未分配。

12*/

13b=newint[3][];

14/*下面代碼為b的每個元素分配空間*/

15b[0]=newint[3];//或b[0]=newint[]{1,2,3},或b[0]={1,2,3}

16b[1]=newint[2];

17b[2]=newint[1];

18

例程(續(xù))19/*初始化*/

20for(inti=0;i<a.length;i++){

21for(intj=0;j<a[i].length;j++){

22a[i][j]=i+j;

23}

24}

25

26for(inti=0;i<b.length;i++){

27for(intj=0;j<b[i].length;j++){

28b[i][j]=i+j;

29}

30}

31

32/*靜態(tài)初始化,分配空間與賦初值同時完成*/

33c={{1,2},{5}};

34

35/*動態(tài)分配空間與賦初值同時完成*/

36d=newint[][]{{1,2},{0},{3,4}};數(shù)組處理工具java.util.Arrays類是專門用于操作數(shù)組的,提供了搜索、排序、復(fù)制等靜態(tài)方法。Arrays類中常用的方法如下:equals():比較兩個數(shù)組是否相等,所謂兩個數(shù)組相等是指兩個數(shù)組擁有相同的元素個數(shù),且所有對應(yīng)元素相等。fill():將值填入數(shù)組中。sort():用來對數(shù)組進行排序。binarySearch():在排好序的數(shù)組中尋找元素。另外一個工具是System.arraycopy(),用于對數(shù)組進行復(fù)制。數(shù)組的優(yōu)缺點數(shù)組的優(yōu)點是數(shù)據(jù)結(jié)構(gòu)簡單,能夠進行隨機訪問,且訪問的速度很快。其缺點有:(1)數(shù)組一旦分配了空間,其大小就不能再改變。(2)數(shù)組中所有元素的數(shù)據(jù)類型都必須相同。(3)不能對

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論