前言
直接搬別人的筆記了,只做排版梳理,可能會加一點自己見解
Java的數據類型
- 基礎數據類型
- 引用類型:除了基礎數據類型剩下都是引用類型
Java 中的幾種基本數據類型是什么?
Java 中有 8 種基本數據類型
- 6 種數字類型 :
byte
、short
、int
、long
、float
、double
- 1 種字符類型:
char
- 1 種布爾型:
boolean
位(bit)
是計算機 內部數據 儲存的最小單位,11001100是一個八位二進制數
字節(byte)
- 是計算機中 數據處理 的基本單位,習慣上用大寫B來表示
- 1Byte(字節) = 8bit(位)
- 1bit 表示1位
- 1024B = 1KB
- 1024KB = 1M
- 1024M = 1G
字符
是指計算機中使用的字母、數字、字和符號
各自占用多少字節呢?
這 8 種基本數據類型的默認值以及所占空間的大小如下:
基本類型 | 位數 | 字節 | 默認值 |
---|---|---|---|
int |
32 | 4 | 0 |
short |
16 | 2 | 0 |
long |
64 | 8 | 0L |
byte |
8 | 1 | 0 |
char |
16 | 2 | 'u0000' |
float |
32 | 4 | 0f |
double |
64 | 8 | 0d |
boolean |
1 | false |
另外,對於 boolean
,官方文檔未明確定義,它依賴於 JVM 廠商的具體實現。邏輯上理解是占用 1 位,但是實際中會考慮計算機高效存儲因素
基礎類型注意點
- Java 里使用
long
類型的數據一定要在數值后面加上 L,否則將作為整型解析 - char a = 'h' char 用單引號, String a = "hello" String 用雙引號
- String 不是基礎數據類型,是引用類型
整型中 byte、short、int、long 的取值范圍
- byte:byte用 1 個字節來存儲,范圍為 -128(-2^7) 到 127(2^7-1),在變量初始化的時候,byte 類型的默認值為 0
- short:short用 2 個字節存儲,范圍為-32,768 (-2^15) 到 32,767 (2^15-1),在變量初始化的時候,short 類型的默認值為 0,一般情況下,因為Java本身轉型的原因,可以直接寫為 0
- int:int用 4 個字節存儲,范圍為-2,147,483,648 (-2^31) 到 2,147,483,647 (2^31-1),在變量初始化的時候,int 類型的默認值為 0
- long:long用 8 個字節存儲,范圍為-9,223,372,036,854,775,808 (-2^63) 到 9,223,372,036, 854,775,807 (2^63-1),在變量初始化的時候,long類型的默認值為 0L 或 0l,也可直接寫為 0
類型轉換
由於 Java 是強類型語言,所有需要有些運算的時候的,需要用到類型轉換。
低 --------------------------------------->高
byte, short, char -> int -> long -> float -> double
(小數的優先級高於整數)
- 運算中,不同類型的數據先轉換為同一類型,然后進行運算
- 強制類型轉換,優先級 高 轉 低
- 這個后面專門的文章來講解
自動類型轉換
由低到高直接輸入,無需強制轉換
轉換注意
- 不能對布爾值進行轉換
- 不能把對象類型轉換為不相干的類型
- 在把高容量轉換到低容量的時候,需要強制轉換
- 轉換的時候可能存在內存溢出,或者精度問題!
各自的對應的包裝類是什么?
基本類型 | 包裝類型 |
---|---|
int |
Integer |
short |
Short |
long |
Long |
byte |
Byte |
char |
Character |
float |
Float |
double |
Double |
boolean |
Boolean |
基礎類型和包裝類型注意點
- 包裝類型不賦值就是
Null
- 而基本類型有默認值所以不是
Null
單精度、雙精度
- 單精度浮點數(float)在計算機存儲器中占用 4 個字節(32 bits),利用“浮點”(浮動小數點)的方法,可以表示一個范圍很大的數值
- 比起單精度浮點數,雙精度浮點數(double)使用 64 位(8字節) 來存儲一個浮點數
浮點數拓展
- float; double 不夠准確
- 實際過程中浮點數無限且離散的,但是float是有限的,他會自動舍入誤差,大約接近,但不等於
- 銀行等准確的計算工具最好使用BigDecimal 數學工具類
精確的對賬最好完全避免使用浮點數進行比較
精確的對賬最好完全避免使用浮點數進行比較
精確的對賬最好完全避免使用浮點數進行比較