Java 基本數據類型

jkog3302 7年前發布 | 12K 次閱讀 Java 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

 

 本文由用戶 jkog3302 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!