Java 基本資料類型
Java 的兩大資料類型:
- 内置資料類型
- 引用資料類型
内置資料類型
對于每一種 資料類型 都有一個 包裝類,如:
void
類型的包裝類是
java.lang.Void
。
對于數值類型的包裝類,我們都可以從中擷取對應類型的二進制位數、取值範圍。
原語 | 對應的 JDK 類 |
---|---|
boolean | java.lang.Boolean |
byte | java.lang.Byte |
char | java.lang.Character |
short | java.lang.Short |
int | java.lang.Integer |
long | java.lang.Long |
float | java.lang.Float |
double | java.lang.Double |
具體的例子,見
PrimitiveTypes.java
下面,分類介紹 Java 中的内置資料類型:
void
代表空的值的類型。
整數型
類型 | 說明 | 範圍 | 預設值 | 備注 |
---|---|---|---|---|
| 8位, 有符号, 以二進制補碼表示的整數 | ~ | 用在大型數組中節約空間 | |
| 16位, 有符号, 以二進制補碼表示的整數 | ~ | ||
| 32位, 有符号, 以二進制補碼表示的整數 | ~ | 一般地整型變量預設為 int 類型 | |
| 64位, 有符号, 以二進制補碼表示的整數 | ~ | | 字面值常量是數後面加"L"("L"理論上不分大小寫,但小寫不易分辯,最好大寫) |
整型字面值常量都可以用十(正常書寫)、八(以
開頭)、十六(以
0x
開頭)進制表示:
int decimal = 100;
int octal = 0114;
int hexadecimal = 0x64;
浮點型
浮點數不能用來表示精确的值。
類型 | 說明 | 預設值 | 備注 |
---|---|---|---|
| 單精度、32位、符合 IEEE 754 标準的浮點數 | | float 在儲存大型浮點數組的時候可節省記憶體空間 |
| 雙精度、64 位、符合IEEE 754标準的浮點數 | | 浮點數的預設類型為double類型 |
字元型
類型 | 說明 | 範圍 | 預設值 | 備注 |
---|---|---|---|---|
| char類型是一個單一的 16 位 Unicode 字元 | ~ | 字面值常量是單引号裡字元(如: ) |
布爾型
類型 | 說明 | 取值 | 預設值 |
---|---|---|---|
| 表示一位的資訊 | 和 | |
引用資料類型
引用類型指向一個對象,指向對象的變量是引用變量。
對象、數組都是引用資料類型。
所有引用類型的預設值都是
null
。
引用變量一旦聲明後,類型就不能被改變了,但一個引用變量可以用來引用任何與之相容的類型。
Java 變量
聲明一個變量,需要使用如下的格式的語句:
type varName;
也可以在聲明的同時,對它初始化:
type varName = initialValue;
【注】初始化一個對象時,使用:
ClassName instanceName = new ClassName();
常量
常量在程式運作時是不能被修改的。
字面值常量
字面值常量,就是直接在程式裡寫一個值,比如
100
,
-100.0
,
'A'
…
這個東西很好了解,特殊的已經在上面的内置類型表格中有說明了。
字面值常量可以賦給任何内置類型的變量。
聲明常量
我們也可以像聲明變量一樣聲明一個常量。
在 Java 中,使用
final
關鍵字來修飾常量,聲明方式和變量類似:
final double PI = 3.1415927;
按照慣例,常量名應該用全部大寫的名稱表示。
字元串常量
和其他語言一樣,Java的字元串常量也是包含在兩個引号之間的字元序列,其中可以使用轉義字元,也可以含有Unicode字元:
"Hello World"
"two\nlines"
"\"This is in quotes\""
"\u0001"
常用的轉義字元如下:
符号 | 字元含義 |
---|---|
| 換行 (0x0a) |
| 回車 (0x0d) |
| 換頁符(0x0c) |
| 倒退 (0x08) |
| 空字元 (0x20) |
| 制表符 |
| 雙引号 |
| 單引号 |
| 反斜杠 |
| 八進制字元 (ddd) |
| 16進制Unicode字元 (xxxx) |
類型轉換
Java 中類型的轉換有以下規則:
- 不能對boolean類型進行類型轉換。
- 不能把對象類型轉換成不相關類的對象。
- 在把容量大的類型轉換為容量小的類型時必須使用強制類型轉換。
- 轉換過程中可能導緻溢出或損失精度。
- 浮點數到整數的轉換是通過舍棄小數得到,而不是四舍五入。
自動類型轉換
在自動類型轉換中,類型總是從低級到進階:
低 ----------------------------------------> 高
byte, short, char —> int —> long —> float —> double
⚠️【注意】在進行整數運算時,如果是兩個比int類型小的類型做運算,java在編譯的時候就會将它們統一強轉成int類型。當有比int類型大的類型運算時,會自動轉換成它們中最大類型那個。
強制類型轉換
通過下面這種語句可以強制類型轉化:
(type)value
⚠️【注意】轉換的資料類型必須是相容的。
資料類型轉換的補充
1、包裝類過渡類型轉換
一般情況下,我們首先聲明一個變量,然後生成一個對應的包裝類,就可以利用包裝類的各種方法進行類型轉換了。
例如:
當希望把float型轉換為double型時:
float f1 = 100.00f;
Float F1 = new Float(f1);
double d1 = F1.doubleValue(); //F1.doubleValue()為Float類的傳回double值型的方法
簡單類型的變量轉換為相應的包裝類,可以利用包裝類的構造函數。
即:
Boolean(boolean value)、Character(char value)
、
Integer(int value)
、
Long(long value)
、
Float(float value)
、
Double(double value)
。
而在各個包裝類中,總有形為
××Value()
的方法,來得到其對應的簡單類型資料。
利用這種方法,也可以實作不同數值型變量間的轉換。
例如,對于一個雙精度實型類,
intValue()
可以得到其對應的整型變量,而
doubleValue()
可以得到其對應的雙精度實型變量。
2、字元串與其它類型間的轉換
其它類型向字元串的轉換
- 調用類的串轉換方法:
X.toString();
- 自動轉換:
X+"";
- 使用String的方法:
String.valueOf(X);
⚠️【注意】在使用
2
時需要注意:任何字元類型與字元串相加,結果都是拼接。
例如:
String s = null;
s += "hello";
System.out.println(s); // 輸出 nullhello
字元串作為值,向其它類型的轉換
- 先轉換成相應的封裝器執行個體,再調用對應的方法轉換成其它類型
例如,字元串
"32.1"
轉換
double
型的值的格式為:
new Float("32.1").doubleValue()
也可以用:
Double.valueOf("32.1").doubleValue()
- 靜态parseXXX方法
String s = "1";
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );
總結
- 隻有 boolean 不參與資料類型的轉換
- 自動類型的轉換:
- 常數在表數範圍内是能夠自動類型轉換的
- 資料範圍小的能夠自動資料類型大的轉換
- 由浮點類型轉換成整數類型不會自動轉換的,不然将會丢失精度。
- 引用類型能夠自動轉換為父類的
- 基本類型和它們包裝類型是能夠互相轉換的
- 強制類型轉換:用圓括号括起來目标類型,置于變量前
本文由 CDFMLR 原創,收錄于個人首頁 https://clownote.github.io,并同時釋出到 CSDN。本人不保證 CSDN 排版正确,敬請通路 clownote 以獲得良好的閱讀體驗。