一、基礎類型
Java 是一種強類型語言 。 這就意味着必須為每一個變量聲明一種類型 : 在 Java 中,一共有 8種基本類型 ( primitive type ) , 其中有 4 種整型 、 2 種浮點類型 、 1 種用於表示 Unicode 編碼的字符單元的字符類型 char 和1 種用於表示真值的 boolean 類型。
類型 | 存儲需求 | 取值范圍 | 默認值 |
---|---|---|---|
byte | 1字節 | -128 ~ 127 | 0 |
short | 2字節 | -32768 ~ 32767 | 0 |
int | 4字節 | -2^31 ~ 2^31 - 1(正好超過20億) | 0 |
long | 8字節 | -2^63 ~ 2^63 - 1 | 0L |
float | 4字節 | 大約 ± 3.402 823 47 E + 38 F ( 有效位數為 6 ~ 7 位 ) | +0.0F |
double | 8字節 | 大約 ± 1.797 693 134 862 315 70 E + 308 ( 有效位數為 15 位 ) | +0.0D |
char | 2字節 | 使用unicode編碼,最大65535 | '\u0000' |
boolean | 取決於虛擬機,1字節或4字節。 | true或false。所占字節大小參考:https://www.jianshu.com/p/2f663dc820d0 | false |
盡管它們的默認值看起來不一樣,但在內存中都是0。
二、Java語言中的boolean類型
在Java語言規范中,boolean類型的值只有兩種可能,它們分別用true和false來表示,顯然這兩種符號是不能被虛擬機直接使用的。
在Java虛擬機規范中,boolean類型則被映射成int類型(4字節)。Java 代碼中的邏輯運算以及條件跳轉,都是用整數相關的字節碼來實現得。具體來說,就是
true -> 1
false -> 0
這個編碼規則約束了Java字節碼的具體實現。
舉個例子,對於存儲boolean數組(1字節)的字節碼,Java虛擬機需保證直接存入的值是1或0。