張洪雷,高喜文,佟宏博
(盤錦職業(yè)技術(shù)學(xué)院,遼寧 盤錦 124000)
關(guān)鍵字:Java;基本數(shù)據(jù)類型;引用數(shù)據(jù)類型
Java的數(shù)據(jù)類型和C語言相比,更加的豐富也更復(fù)雜,在教學(xué)過程中,很多同學(xué)都很難準(zhǔn)確使用各種數(shù)據(jù)類型,結(jié)合本人多年的教學(xué)經(jīng)驗,在這里對于Java的數(shù)據(jù)類型進行全面的解析,希望給學(xué)習(xí)Java的學(xué)習(xí)者們一些幫助
我們都知道,Java的數(shù)據(jù)類型包括兩大類,分別是基本數(shù)據(jù)類型和引用數(shù)據(jù)類型?;緮?shù)據(jù)類型包括4類(共8種),引用數(shù)據(jù)類型包括3類,具體如圖1所示
圖1 Java 的數(shù)據(jù)類型
基本數(shù)據(jù)類型比較簡單,和C語言中的數(shù)據(jù)類型相似,使用方法也比較簡單,Java的基本數(shù)據(jù)類型又分為四類,共8種數(shù)據(jù)類型,具體情況如下表所示基本數(shù)據(jù)類型存儲在??臻g中,存儲速度很快,通過變量定義就可以創(chuàng)造一個基本數(shù)據(jù)類型的變量,系統(tǒng)會在棧空間中開辟指定大小的空間,該空間中存入變量的值,在變量的生存期結(jié)束后,基本數(shù)據(jù)類型所占的空間也會自動被釋放。
表1 Java 的8 種基本數(shù)據(jù)類型
引用數(shù)據(jù)類型是比較復(fù)雜的數(shù)據(jù)類型,也是初學(xué)者不好掌握的一塊內(nèi)容,引用數(shù)據(jù)類型主要包括類、接口和數(shù)組。
(1)類。類可以是我們自己定義的類,也可以是系統(tǒng)提供的類,常見的有String、Scanner、Random、Integer等。
(2)接口。接口對于初學(xué)Java的人來說是十分不友好的,接口是常量和方法的集合,接口和類有相同的地方,也有很多的區(qū)別。相對于類來說,接口更不好理解一些,其實類要定義屬性和方法,而接口則包括類要定義的方法,這些方法都是抽像的,接口不能像類那樣實例成一個對象,但接口可以被類實現(xiàn),一個實現(xiàn)接口的類,必須實現(xiàn)接口內(nèi)所描述的所有方法,否則就必須聲明為抽象類。
從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實現(xiàn)。接口的出現(xiàn)主要就是為了解決類無法進行多重繼承的缺點。
接口和類的區(qū)別如下表所示
(3)數(shù)組。數(shù)組和C語言中的數(shù)據(jù)相似,數(shù)組用來組織多個相同類型的數(shù)據(jù),基本數(shù)據(jù)類型可以定義成數(shù)組,引用數(shù)據(jù)類型也可以定義成數(shù)組,如字符串?dāng)?shù)組就是一個引用數(shù)據(jù)類型的數(shù)組。
從概念上說,引用數(shù)據(jù)類型的標(biāo)識符表示的是一片內(nèi)存連續(xù)空間的首地址,這個地址指向堆空間的一片區(qū)域,用于存放引用數(shù)據(jù)類型的具體內(nèi)容。
如int[] arr1={1,2,3,4};
int[] arr2=arr1;
以上語句在內(nèi)存中存放的情況如圖2所示。
圖2 引用型數(shù)據(jù)內(nèi)容存儲情況
這時如果修改數(shù)組arr2的某個元素的值,則數(shù)組arr1中指定的元素的值也會發(fā)生變化。
表2 接口和類的區(qū)別
Java是強數(shù)據(jù)類型的編程語言,要求參與運算的所有量都必須有明確的數(shù)據(jù)類型,同時結(jié)果的數(shù)據(jù)類型會根據(jù)運算量的類型來確定。
(1)自動轉(zhuǎn)換
類型自動轉(zhuǎn)換是指在運算過程中,根據(jù)運算規(guī)則和參與運算的運算量類型,系統(tǒng)會自動進行轉(zhuǎn)換某些運算量的類型。在Java的8種基本數(shù)據(jù)類型中,除boolean類型外,其它的7種數(shù)據(jù)類型的數(shù)據(jù)都是可以進行運算的,但由于他們所占內(nèi)存的位數(shù)不同,因此在進行運算時首先要將低位數(shù)的操作數(shù)轉(zhuǎn)換為較高位數(shù)的操作數(shù),之后再進行運算,結(jié)果也是較高位數(shù)的類型,具體如下表所示時就會報錯,這時我們就需要進行強制類型轉(zhuǎn)換,即為c=(char)(c-32)
(3)使用方法進行轉(zhuǎn)換
各種基本類型的轉(zhuǎn)換可以通過自動轉(zhuǎn)換或強制轉(zhuǎn)換進行,但如果要想將數(shù)值型與字符串進行轉(zhuǎn)換,就需要使用包裝類的方法來轉(zhuǎn)換數(shù)據(jù)類型了,接下來我們說一下int與String的轉(zhuǎn)換方式,其它基本類型與String的轉(zhuǎn)換方式可以參照int的轉(zhuǎn)換。
(a)int轉(zhuǎn)換成String,使用整型包裝類Integer的toString()方法,例如:
inti=123;
String s=Integer.toString(i);
除此之外還可以使用空字符串連接的方式巧妙的將整型轉(zhuǎn)換成字符串,如:
inti=123;
String s=””+i;
(b)String轉(zhuǎn)換成int,使用整型包裝類Integer的parseInt()方法,例如:
String s=”123”;
inti=Integer.parseInt(s);
使用這條語句時一定要保證被轉(zhuǎn)換的字符串去換雙引號后是一個整數(shù),不然就會報錯,因此使用此語句時建議進行異常處理。
表3 系統(tǒng)自動類型轉(zhuǎn)換的規(guī)則
(2)強制轉(zhuǎn)換
強制轉(zhuǎn)換是一種顯性的轉(zhuǎn)換方式,其方法就是在要轉(zhuǎn)換的數(shù)據(jù)前加上(要轉(zhuǎn)換的數(shù)據(jù)類型的說明符),如:(int)3.5,就可以將雙精度數(shù)3.5強制轉(zhuǎn)換成整型數(shù)3。當(dāng)將高位數(shù)的數(shù)賦值給低位數(shù)的變量時,就必須進行強制類型轉(zhuǎn)換,否則系統(tǒng)就會報錯,強制類型轉(zhuǎn)換只能在除boolean外的7種基本數(shù)據(jù)類型間進行。
例:
char c=’a’;
c=c-32;
第二行程序是要將小寫字母轉(zhuǎn)換成大寫字母,按上面的規(guī)則,char和int運算的結(jié)果是int,賦值給char
Java的數(shù)據(jù)類型較C語言更加的規(guī)范,這就要求編程人員對于參于運算的所有數(shù)據(jù)和運算結(jié)果的類型都要了然于胸,能否掌握各種數(shù)據(jù)類型之間的關(guān)系是學(xué)習(xí)Java面對第一難關(guān),需要反復(fù)的練習(xí)和不斷的感悟。