一、基礎型別
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。所佔位元組大小參考:www.jianshu.com/p/2f663dc82… | false |
儘管它們的預設值看起來不一樣,但在記憶體中都是0。
二、Java語言中的boolean型別
在Java語言規範中,boolean型別的值只有兩種可能,它們分別用true和false來表示,顯然這兩種符號是不能被虛擬機器直接使用的。
在Java虛擬機器規範中,boolean型別則被對映成int型別(4位元組)。Java 程式碼中的邏輯運算以及條件跳轉,都是用整數相關的位元組碼來實現得。具體來說,就是
true -> 1
false -> 0
這個編碼規則約束了Java位元組碼的具體實現。
舉個例子,對於儲存boolean陣列(1位元組)的位元組碼,Java虛擬機器需保證直接存入的值是1或0。