張洪雷,高喜文,佟宏博
(盤錦職業技術學院,遼寧 盤錦 124000)
關鍵字:Java;基本數據類型;引用數據類型
Java的數據類型和C語言相比,更加的豐富也更復雜,在教學過程中,很多同學都很難準確使用各種數據類型,結合本人多年的教學經驗,在這里對于Java的數據類型進行全面的解析,希望給學習Java的學習者們一些幫助
我們都知道,Java的數據類型包括兩大類,分別是基本數據類型和引用數據類型。基本數據類型包括4類(共8種),引用數據類型包括3類,具體如圖1所示

圖1 Java 的數據類型
基本數據類型比較簡單,和C語言中的數據類型相似,使用方法也比較簡單,Java的基本數據類型又分為四類,共8種數據類型,具體情況如下表所示基本數據類型存儲在棧空間中,存儲速度很快,通過變量定義就可以創造一個基本數據類型的變量,系統會在棧空間中開辟指定大小的空間,該空間中存入變量的值,在變量的生存期結束后,基本數據類型所占的空間也會自動被釋放。

表1 Java 的8 種基本數據類型
引用數據類型是比較復雜的數據類型,也是初學者不好掌握的一塊內容,引用數據類型主要包括類、接口和數組。
(1)類。類可以是我們自己定義的類,也可以是系統提供的類,常見的有String、Scanner、Random、Integer等。
(2)接口。接口對于初學Java的人來說是十分不友好的,接口是常量和方法的集合,接口和類有相同的地方,也有很多的區別。相對于類來說,接口更不好理解一些,其實類要定義屬性和方法,而接口則包括類要定義的方法,這些方法都是抽像的,接口不能像類那樣實例成一個對象,但接口可以被類實現,一個實現接口的類,必須實現接口內所描述的所有方法,否則就必須聲明為抽象類。
從本質上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實現。接口的出現主要就是為了解決類無法進行多重繼承的缺點。
接口和類的區別如下表所示
(3)數組。數組和C語言中的數據相似,數組用來組織多個相同類型的數據,基本數據類型可以定義成數組,引用數據類型也可以定義成數組,如字符串數組就是一個引用數據類型的數組。
從概念上說,引用數據類型的標識符表示的是一片內存連續空間的首地址,這個地址指向堆空間的一片區域,用于存放引用數據類型的具體內容。
如int[] arr1={1,2,3,4};
int[] arr2=arr1;
以上語句在內存中存放的情況如圖2所示。

圖2 引用型數據內容存儲情況
這時如果修改數組arr2的某個元素的值,則數組arr1中指定的元素的值也會發生變化。

表2 接口和類的區別
Java是強數據類型的編程語言,要求參與運算的所有量都必須有明確的數據類型,同時結果的數據類型會根據運算量的類型來確定。
(1)自動轉換
類型自動轉換是指在運算過程中,根據運算規則和參與運算的運算量類型,系統會自動進行轉換某些運算量的類型。在Java的8種基本數據類型中,除boolean類型外,其它的7種數據類型的數據都是可以進行運算的,但由于他們所占內存的位數不同,因此在進行運算時首先要將低位數的操作數轉換為較高位數的操作數,之后再進行運算,結果也是較高位數的類型,具體如下表所示時就會報錯,這時我們就需要進行強制類型轉換,即為c=(char)(c-32)
(3)使用方法進行轉換
各種基本類型的轉換可以通過自動轉換或強制轉換進行,但如果要想將數值型與字符串進行轉換,就需要使用包裝類的方法來轉換數據類型了,接下來我們說一下int與String的轉換方式,其它基本類型與String的轉換方式可以參照int的轉換。
(a)int轉換成String,使用整型包裝類Integer的toString()方法,例如:
inti=123;
String s=Integer.toString(i);
除此之外還可以使用空字符串連接的方式巧妙的將整型轉換成字符串,如:
inti=123;
String s=””+i;
(b)String轉換成int,使用整型包裝類Integer的parseInt()方法,例如:
String s=”123”;
inti=Integer.parseInt(s);
使用這條語句時一定要保證被轉換的字符串去換雙引號后是一個整數,不然就會報錯,因此使用此語句時建議進行異常處理。

表3 系統自動類型轉換的規則
(2)強制轉換
強制轉換是一種顯性的轉換方式,其方法就是在要轉換的數據前加上(要轉換的數據類型的說明符),如:(int)3.5,就可以將雙精度數3.5強制轉換成整型數3。當將高位數的數賦值給低位數的變量時,就必須進行強制類型轉換,否則系統就會報錯,強制類型轉換只能在除boolean外的7種基本數據類型間進行。
例:
char c=’a’;
c=c-32;
第二行程序是要將小寫字母轉換成大寫字母,按上面的規則,char和int運算的結果是int,賦值給char
Java的數據類型較C語言更加的規范,這就要求編程人員對于參于運算的所有數據和運算結果的類型都要了然于胸,能否掌握各種數據類型之間的關系是學習Java面對第一難關,需要反復的練習和不斷的感悟。