通常情況下,為了方便物品的存儲,我們會規定每個盒子可以存放的物品種類,就好比在“放首飾的盒子”里我們是不會放“面包”的!同理,變量的存儲也講究“分門別類”~
Java語言是一種強類型語言。通俗點說就是,在Java中存儲的數據都是有類型的,而且必須在編譯時就確定其類型。Java中有兩類數據類型:基本數據類型(Primitive Type)和引用數據類型(Reference Type)
Java基本數據類型
基本數據類型包括 boolean(布爾型)、char(字符型)、byte(字節型)、short(短整型)、int(整型)、long(長整型)、float(單精度浮點型)、和 double(雙精度浮點型)共8種
在 Java 的領域里,基本數據類型變量存的是數據本身,而引用類型變量存的是保存數據的空間地址。
(說白了,基本數據類型變量里存儲的是直接放在抽屜里的東西,而引用數據類型變量里存儲的是這個抽屜的鑰匙,鑰匙和抽屜一一對應。)
常用數據類型舉例:
基本數據類型又可分為 4 大類,即整數類型(包括byte、short,int 和 long)、浮點類型(包括 float 和 double)、布爾類型和字符類型(char)
1)整數類型
Java 定義了 4 種整數類型變量:字節型(byte)、短整型(short)、整型(int)和長整型(long)。這些都是有符號的值,正數或負數。
運行結果:
在該示例中,首先依次定義了 byte 類型、short 類型、int 類型和 long 類型的 4 個變量,並賦予了初始值,然后定義了一個 long 類型、名稱為 sum 的變量。sum 變量的值為前 4 個變量之和,最后輸出 sum 變量的值,即相加之后的結果。
提示:因為 byte 類型、short 類型、int 類型和 long 類型都是整數類型,故可以使用“+”相加,而非字符串之間的連接。
2)浮點類型
浮點類型是帶有小數部分的數據類型,也叫實型。浮點型數據包括單精度浮點型(float)和雙精度浮點型(double),代表有小數精度要求的數字。
單精度浮點型(float)和雙精度浮點型(double)之間的區別主要是所占用的內存大小不同,float 類型占用 4 字節的內存空間,double 類型占用 8 字節的內存空間。雙精度類型 double 比單精度類型 float 具有更高的精度和更大的表示范圍。
Java 默認的浮點型為 double,例如,11.11 和 1.2345 都是 double 型數值。如果要說明一個 float 類型數值,就需要在其后追加字母 f 或 F,如 11.11f 和 1.2345F 都是 float 類型的常數。
例如:
聲明 float 類型的變量並賦予初值:float price = 12.2f;
聲明 double 類型的變量並賦予初值:double price = 12.254d; 或 double price = 12.254;
注意:一個值要能被真正看作 float,它必須以 f(或 F)后緩結束;否則,會被當作 double 值。對 double 值來說,d(或 D)后緩是可選的。
運行結果:
在該示例中,首先定義了一個類型為double、名稱為distance的變量用於存儲單程距離,然后定義了一個類型為int、名稱為num的變量用於存儲經過的次數,最后定義了一個類型為float、名稱為total的變量用於存儲總距離。
其實一個double類型的數據與一個int類型的數據相乘后得到的結果類型為double,但是由於單程距離乘以次數為一個單精度浮點型(float類型)的數,因此可以將總距離轉換為float類型的數據。
3)布爾類型
布爾類型(boolean)用於對兩個數值通過邏輯運算,判斷結果是“真”還是“假”。Java中用保留字true和false來代表邏輯運算中的“真”和“假”。因此,一個boolean類型的變量或表達式只能是取true和false這兩個值中的一個。
在Java語言中,布爾類型的值不能轉換成任何數據類型,true常量不等於1,而false常量也不等於0。這兩個值只能賦給聲明為boolean類型的變量,或者用於布爾運算表達式中。
4)字符類型
Java 語言中的字符類型(char)使用兩個字節的 Unicode 編碼表示,它支持世界上所有語言,可以使用單引號字符或者整數對 char 型賦值。
一般計算機語言使用ASCII編碼,用一個字節表示一個字符。ASCII碼是Unicode碼的一個子集,用Unicode表示ASCII碼時,其高字節為0,它是其前255個字符。
Unicode字符通常用十六進制表示。例如“\u0000”~“\u00ff”表示ASCII碼集。“\u”表示轉義字符,它用來表示其后4個十六進制數字是Unicode碼。
字符型變量的類型為char,用來表示單個的字符。
例如:
char letter = 'D';
char numChar = '5';
第一條語句將字符D賦給字符型變量letter,第二條語句將數字字符5賦給字符型變量numChar。
運行結果:
在該示例中,a變量首先被賦值為“A”,字母A在ASCII(和 Unicode)中對應的值為65。接着又定義了一個類型為char的變量b,賦值為“B”,字母B在ASCII(和 Unicode)中所對應的值為66。因此相加后得出的結果為131。
Java引用數據類型
引用數據類型建立在基本數據類型的基礎上,包括數組、類和接口。引用數據類型是由用戶自定義,用來限制其他數據的類型。(Java語言中不支持C++中的指針類型、結構類型、聯合類型和枚舉類型。)
引用類型還有一種特殊的null類型。所謂引用數據類型就是對一個對象的引用,對象包括實例和數組兩種。(實際上,引用類型變量就是一個指針,只是Java語言里不再使用指針這個說法。)
空類型(null type)就是null值的類型,這種類型沒有名稱。因為null類型沒有名稱,所以不可能聲明一個null類型的變量或者轉換到null類型。
所有引用類型的默認值都是null。
一個引用變量可以用來引用任何與之兼容的類型。
注意:空引用(null)只能被轉換成引用類型,不能轉換成基本類型,因此不要把一個null值賦給基本數據類型的變量。