Java語言的基本數據類型共八種,也可稱爲內置類型,分別具有對應的包裝類。字符型char,布爾型boolean以及數值型byte、short、int、long、float、double。數值型又可以分爲整形(byte、short、int(默認類型)、long)與浮點型(float、double(默認類型))。它們的取值範圍是固定的,不會隨着機器硬件環境或軟件環境的改變而改變。固定的存儲空間正是Java可移植性、跨平臺的原因之一。以上八種數據類型不存在“引用”的概念,其都是直接存儲在內存中的內存棧上的,數據本身的值就是存儲在棧空間中,而複雜數據類型,其“引用”是存儲在有序的內存棧上的,而對象本身的值存儲在內存堆上。
整數類型
byte 包裝類 java.lang.Byte 其佔1個字節 8位 默認初始值 0 取值範圍 -2^(8-1)~2^(8-1)-1
short 包裝類 java.lang.Short 其佔2個字節 16位 默認初始值 0 取值範圍 -2^(16-1)~2^(16-1)-1
int 包裝類 java.lang.Integer 其佔4個字節 32位 默認初始值 0 取值範圍 -2^(32-1)~2^(32-1)-1 默認類型
long 包裝類 java.lang.Long 其佔8個字節 64位 默認初始值 0 取值範圍 -2^(64-1)~2^(64-1)-1
實數類型
float 包裝類 java.lang.Float 其佔4個字節 32位 默認初始值 0.0
double 包裝類 java.lang.Double 其佔8個字節 64位 默認初始值 0.0 默認類型
字符型
char 包裝類 java.lang.Character 其佔2個字節 16位 默認初始值空格字符 取值範圍 0 ~ 2^(16-1)-1
布爾類型
boolean 包裝類 java.lang.Boolean 其佔一位0或1 默認初始值false 取值 true false
當變量在方法中得初始化,在類中當屬性時可以不用。
基本類型數據轉型分爲兩種:自動轉型和強制轉型
自動轉型:當一個數據類型較“小”的數據和一個數據類型較”大“的數據一起運行時,系統會自動將較”小“的轉換爲較“大”的類型。
在方法的調用中,如果實際參數類型較“小“,而函數的形參比較”大“時,除非有匹配的方法,否則會直接使用較”大”的形參函數進行使用。因爲實參類型可自動的轉爲函數形參類型。
強制裝換:恰恰相反,將數據類型”大“的轉換爲“小”的時候,用強制轉換不過這時有可能會出現精度損失。轉換方法例如int num = (nt)3.14 ; 後num爲3;不四捨五入
byte short (char) int (默認類型) long float double 自動轉換類型順序 強制則反過來 。
常見問題:
各種基本數據類型進行混合運算,結果會是表達能力最強的那種。如:int和long運算,結果是long,整型和浮點型運算結果是浮點型。特殊的一點是:只要類型比int小(如char、byte、short),那麼在運算之前,這些值會自動地轉換成int。
例子:
byte b1 = 12;
byte b2 = b1 + 1; //在編譯時出錯了!因爲b1+1已經是int型了!切記! 系統自動轉型了! (byte) (b + 1)
float f = 1.3 ; //錯的 因爲 默認是 double類型 而且double類型高於float類型 解決的辦法就是 float f = 1.3f; 或者是強轉成float型。
long l = 1L ; long l1 = 2l;