java數據類型
基本數據類型
數值型
- 整數類型
- byte
佔用存儲空間:1字節,8位;
表示範圍:-27 ~27 -1 (-128~127);
表示:byte num = 1
; - short
佔用存儲空間:2字節,16位;
表示範圍:-215 ~215 -1 (-32768-32767);
表示:short num = 1
; - int
佔用存儲空間:4字節,32位;
表示範圍:-231 ~231 -1 (-2147483648~2147483647);
表示:int num = 1
; - long
佔用存儲空間:8字節,64位;
表示範圍:-263 ~263 -1;
表示:long num = 1l
或long num = 1L
;建議使用大寫L,小寫容易誤認爲數字1;
- byte
浮點類型
- float
佔用存儲空間:4字節,32位;
表示範圍:-3.403E38~3.403E38;
表示:float num = 1f
或float num = 1F
; - double
佔用存儲空間:8字節,64位;
表示範圍:-1.798E308~1.798E308;
表示:double num = 1.0; 比較
- 默認是double
浮點數存在誤差,所以在比較中儘量避免使用浮點數,如
float num1 = 0.1f; double num2 = 1.0/10; System.out.println(num1==num2); 輸出的是false而不是true;
如果需要精確保存一個浮點數可使用BigDecimal;
- 三個特殊的浮點數值:
正無窮大,負無窮大和非數;用於表示溢出和出錯;正無窮大通過Double和Float類的POSITIVE_INFINITY表示,負無窮大通過Double和Float類的NEGATIVE_INFINITY表示,非數通過Double 和Float類的NaN表示;所有的正無窮大數值都是相等的,所有的負無窮大的數值也是相等的,而NaN不與任何數值相等,甚至與NaN都不相等;
- float
- 整數類型
字符型
- char
佔用存儲空間:2字節,16位;
表示範圍:0~216 -1(0~65535);
表示:
char c = 'a';
直接通過單個字符指定;
char c = '\n';
通過轉義字符制定;
char c = '\uXXXX'
XXXX代表一個十六進制的整數,通過Unicode表示;
常見轉義字符:
轉義字符 說明 Unicode表示方法 \b 退格符 \u0008 \n 換行符 \u000a \r 回車符 \u000d \t 製表符 \u0009 \” 雙引號 \u0022 \’ 單引號 \u0027 \ \ 反斜線 \u005c - char
布爾型
- boolean
佔用存儲空間:1位;
表示範圍:true,false;
表示:boolean b = true;
- boolean
類型轉換
自動類型轉換
容量(表示的數據個數)小的數據類型可以自動轉換爲容量大的數據類型:
int i = 1; double d = i; float f = i; double d2 = f;
特例:可以將整數常量直接賦值給byte,short,char等類型變量,而不需要強制類型轉換,只要不超出其表示範圍:
short b = 12;// 合法; short b = 1234567;//非法
在下圖,黑色箭頭表示無數據丟失的自動類型轉換,紅色表示在轉換時可能存在精度的損失:
- 強制類型轉換
- 強制類型轉換用於顯示的轉換一個數值的類型,在有可能丟失信息的情況下進行的轉換是通過強制類型轉換來實現的,但可能造成精度降低或溢出;
- 當一種類型強制轉換爲另一種類型,而又超出了目標類型的表示範圍,就會被截斷爲完全不同的值;
引用數據類型
- 類
- 接口
- 數組類型
- null