Java 基本數據類型
Java中有以下幾種基本數據類型,這些類型都是值類型。
類型 | 值范圍 | 大小 | 范圍 |
---|---|---|---|
boolean | true或false | 1位 | |
char | Unicode字符 | 16位 | '\u0000'~'\uFFFF' |
byte | 有符號整數 | 8位 | -128~127 |
short | 有符號整數 | 16位 | -32768~32767 |
int | 有符號整數 | 32位 | -2^31~2^31-1 |
long | 有符號整數 | 64位 | -2^63~2^63-1 |
float | IEEE 754浮點數 | 32位 | 1.4E-45~3.4028235e+38 |
double | IEEE 754浮點數 | 64位 | 4.9E-324~1.7976931348623157E+308 |
布爾類型
boolean是布爾類型,用來表示邏輯真值,只有兩個值,真和假。而且不能和其他基本類型進行類型轉換,主要作用是在條件和判斷語句中作為判斷條件。
各種基本類型的值可以直接出現在程序中,這樣的值叫做 字面量 。對于布爾類型來說,字面量只有 true 和 false 兩個。
boolean condition = true;
if(condition) {
...
}
字符類型
char也就是字符類型,用來表示一個Unicode字符。除了可以使用普通字符外,還可以使用各種轉義字符以及Unicode轉義序列與一些非打印字符。字符類型的字面量,必須使用單引號 ' 包裹起來。
char c = 'A';
char tab = '\t';
char nul = '\000';
轉義字符 | 含義 |
---|---|
\b | 退格符 |
\t | 水平制表符 |
\n | 換行符 |
\f | 換頁符 |
\r | 回車符 |
\" | 雙引號 |
\' | 單引號 |
\\ | 反斜杠 |
\xxx | Latin-1字符,其中xxx是八進制數 |
\uxxxx | Unicode字符,其中xxxx是十六進制數 |
char類型和其他數字類型可以互相轉換。但是轉換之后的意義可能會發生變化。另外需要說一點,在Java中,對于Unicode轉義序列的處理和其他語言有些不同。在Java源代碼中的任意位置,都可以使用Unicode轉義序列,甚至是關鍵字都可以。
整數類型
Java中有 byte 、 short 、 int 、 long 四中整數類型,它們的主要區別在于表示范圍的不同。由于現在計算機性能和存儲空間都有了極大的增長,所以 byte 和 short 兩種類型已經很少用了,一般情況下都使用 int 類型,只有當 int 類型不夠的時候才使用 long 類型。
有過C語言學習經驗的同學可能知道C語言中有一個 unsigned 關鍵字,表示無符號類型,但是在Java中沒有這個關鍵字。這就意味著,Java中的所有整數,都是有符號整數。
byte b = 10;
short s = 50000;
int i = 12345678;
long l = 1234567890;
整數字面量 | 含義 |
---|---|
5000 | 普通數字,看做 int 字面量 |
5000L | 后綴 l 或 L , long 字面量 |
0b0001 | 前綴 0b ,二進制數字,即十進制的1 |
0007 | 前綴 0 ,八進制數字,即十進制的1 |
0xff | 前綴 0x 或 0X ,十六進制數字,即十進制的255 |
另外,在整數字面量中還可以使用下劃線增強可讀性,下劃線會被程序忽略,不影響數字的值。由于八進制數字以0作為前綴,容易引起混淆,因此在程序中應避免使用。
在Java中使用整數類型,應注意其范圍,避免產生溢出等情況。如果數據溢出,就會出現回繞情況。例如
byte a = 127;
byte b = 1;
byte sum = (byte)(a + b); //結果為-128,發生回繞
浮點數類型
浮點數即小數,由于在計算機中存儲的時候位數是固定的,而小數點會發生移動,因此得名浮點數。在Java中有 float 和 double 兩種類型。 float 是單精度浮點數,有至少6位有效數字。 double 是雙精度浮點數,至少有15位有效數字。
float f = 12.34F;
double d = 123.456;
d = 1.23E5;
需要注意默認情況下浮點數被認為是 double 型字面量,如果想要使用 float 型字面量,需要添加 f 或 F 后綴。另外,還可以使用科學計數法表示浮點數。
注意,由于二進制數和十進制數無法進行精確轉換,所以Java中的float和double都是近似的,在進行計算的時候需要格外小心,避免產生無法預料的后果。
類型轉換
除了布爾類型之外,其余所有的基本類型之間都可以進行互相轉換。在轉換的時候需要注意數字的范圍,如果由小范圍向大范圍轉換,數字精度不會丟失,這樣的轉換就可以直接進行,稱作隱式轉換。如果由大范圍向小范圍轉換,數字精度會丟失,這樣的轉換默認情況下不允許進行。這種情況下需要使用強制類型轉換,在要轉換的數字前面添加一對括號和要轉換的類型,這叫做顯式轉換。
byte small = 12;
int big = 300;
big = small; //小范圍向大范圍轉換
small = (byte) big; //大范圍向小范圍轉換,需要強制類型轉換
浮點數轉換成整數的時候,小數部分會被直接截取。
int i = 10;
double d = 12.34;
i = (int) d; //現在是12,小數部分被丟棄
來自:http://www.jianshu.com/p/1097f44781f0