Java基礎03 八大基本型別以及型別之間的轉換
阿新 • • 發佈:2020-09-08
Java的基本型別以及封裝類
Java的基本型別有八種,可以分為三大類:
- 字元型別:char
- 布林型別:boolean
- 數值型別:byte、short、int、long、float、double
基本型別的取值範圍如下:
- char:16位,儲存Unicode碼,用單引號賦值。
- boolean:只有true和false兩個取值。
- byte:8位,最大儲存資料量是255,存放的資料範圍是-128~127之間。
- short:16位,最大資料儲存量是65536,資料範圍是-32768~32767之間。
- int:32位,最大資料儲存容量是2的32次方減1,資料範圍是負的2的31次方到正的2的31次方減1。
- long:64位,最大資料儲存容量是2的64次方減1,資料範圍為負的2的63次方到正的2的63次方減1。
- float:32位,資料範圍在3.4e-45~1.4e38,直接賦值時必須在數字後加上f或F。
- double:64位,資料範圍在4.9e-324~1.8e308,賦值時可以加d或D也可以不加。
Java在設計之初就已經定義好了各個型別的大小,不會隨機器的不同而產生不同的大小,其定義的大小都被設計到對應封裝類的常量中,最大值與最小值分別用 MAX_VALUE、MIN_VALUE 兩個常量表示。Java的基本型別對應的封裝型別如下表格:
簡單型別 | char | boolean | byte | short | int | long | float | double |
---|---|---|---|---|---|---|---|---|
二進位制位數 | 16 | 1 | 8 | 16 | 32 | 64 | 32 | 64 |
封裝類 | Character | Boolean | Byte | Short | Integer | Long | Float | Double |
型別之間的轉換
在Java的開發中,經常會涉及到不同基礎型別之間的轉換,Java語言處了布林型別的資料之外,另外的7中基本型別之間可以相互轉換。
Java型別轉換可以分為以下幾類:
- 自動型別轉換:指系統支援把某種基礎型別直接付給另一種基礎型別的變數。
前提條件,必須是把表數範圍小的數值或變數賦給表數範圍大的變數。 - 強制型別轉換:將大範圍的資料型別轉換為小範圍的資料型別,超出小範圍的大小,會出現資料精度丟失的情況。
轉換方式:(Type) value
注意:
①把一個浮點型別的資料轉換為整數型別的資料,會直接截斷小數部分。
②把一個超出資料範圍的數值賦給資料型別是,會出現資料溢位的情況,造成資料的缺失。(原因:當你大範圍轉小範圍,Java只會擷取小範圍的型別的位數(二進位制形式的機器碼),也就是把左邊多餘的位數擷取掉,若需要轉換的數值大小超過小範圍的大小,就會出現精度丟失的情況) - 表示式型別自動提升:在綜合以上兩種方式,還有一種隱性的方式--表示式型別轉換。表示式歸根到底屬於自動型別轉換的範疇之中。
表示式型別轉換的自動提升規則:
①所有的byte型別、short型別將被提升到int型別
②整個算數表示式的資料型別自動提升到與表示式中最高等級運算元同樣的型別。
例子:
short a = 10;
a= a - 2;
// 這個時候就會報錯,因為 short 型別會在自動轉換為 int 類,你把int 型別的資料賦值給 short 型別的資料,在沒有經過強制型別轉換的情況下,就會報錯
// 正確的做法是用一個 int 型別的變數去接收
int b = a - 2
- 包裝類過渡型別轉換:通過基本型別的對應的包裝類中的對應的xxxValue方法轉換為需要的型別。(與String型別的轉換比較特殊,需要不同的方法,下面例子中會有)
注意:與 String 型別之間的轉換,其 value 要滿足數值型別的格式。
例子:
// double 轉 float
double d = 30d;
Double d1 = new Double(d);
float f = d1.floatValue() ;
// int 轉 String 型別
int a = 100;
String str = String.valueOf(a);
// String 型別轉 int 型別
String str2 = "123";
int i = Integer.parseInt(str);