Java基礎(chǔ)教程之八大基本數(shù)據(jù)類型
前言
自從Java發(fā)布以來,基本數(shù)據(jù)類型就是Java語言的一部分,分別是byte, short, int, long, char, float, double, boolean.
其中:
整型:byte, short, int, long
字符型:char
浮點型:float, double
布爾型:boolean
在詳細介紹之前,先科普一下,Java中最小的計算單元為字節(jié),1字節(jié)=8位(bit)。
一. 整型
Java中整型數(shù)據(jù)屬于有符號數(shù),即第一個bit位為0表示正整數(shù),第一個bit位為1表示負整數(shù)。在計算機中負數(shù)由補碼進行表示,那么補碼如何計算呢?
補碼=源碼取反 + 1;
如:
22,在計算機中的表示為00010110,
-22,取反:11101001,加1:11101010
byte
byte屬于Java中的整型,長度為1字節(jié)8bit,取值10000000(-128)到 01111111(127),變量初始化默認值為0,包裝類Byte
short
short屬于Java中的整型,長度為2字節(jié)16bit,取值10000000 00000000(-32768)到 01111111 11111111(32767),變量初始化默認值為0,包裝類Short
int
int屬于Java中的整型,長度為4字節(jié)32bit,取值-2^31 (-2,147,483,648)到 2^31-1(2,147,483,647),變量初始化默認值為0,包裝類Integer
long
long屬于Java中的整型,長度為8字節(jié)64bit,取值-2^63 (-9,223,372,036,854,775,808)到 2^63-1(9,223,372,036,854,775,8087),變量初始化默認值為0或0L,包裝類Long
二. 浮點型
Java中浮點型數(shù)據(jù)無法由二進制直接表示,而是一種對于實數(shù)的近似數(shù)據(jù)表示法,它遵循IEEE 754標(biāo)準(zhǔn)
float
float屬于Java中的浮點型,也叫單精度浮點型,長度為4字節(jié)32bit,變量初始化默認值0.0f,包裝類Float
1. float結(jié)構(gòu)
包含三部分:符號位、指數(shù)位、尾數(shù)位
符號位(S) | 指數(shù)位(E) | 尾數(shù)位(M) | |
---|---|---|---|
長度 | 1bit | 8bit | 23bit |
說明 | 0表示正數(shù),1表示負數(shù) | 格式為![]() ![]() ![]() |
形式為1.M或0.M。其中當(dāng)E=0時,取1.M,稱為正規(guī)形式,當(dāng)E!= 0時,取0.M,稱為非正規(guī)形式 |
2. float取值
正規(guī)形式:
非正規(guī)形式:
根據(jù)上面公式很容易計算出float的取值范圍為:
(最小值,當(dāng)符號位S取1,指數(shù)位E取255)
(最大值,當(dāng)符號位S取0,指數(shù)位E取255)
能取到其間的近似數(shù)據(jù)。
注意:根據(jù)指數(shù)位和尾數(shù)位的取值不同,還有很多特殊情況,如NAN,正無窮,負無窮,但平時基本不會用到,這里不再深入;同時由于是近似值,因此無法表示金額,表示金額建議使用BigDecimal
double
double屬于Java中的浮點型,也叫雙精度浮點型,長度為8字節(jié)64bit,變量初始化默認值0.0d,包裝類Double
1. double結(jié)構(gòu)
包含三部分:符號位、指數(shù)位、尾數(shù)位



正規(guī)形式:
非正規(guī)形式:
根據(jù)上面公式很容易計算出double的取值范圍為:
(最小值,當(dāng)符號位S取1,指數(shù)位E取2047)
(最大值,當(dāng)符號位S取0,指數(shù)位E取2047)
能取到其間的近似數(shù)據(jù)。
注意:根據(jù)指數(shù)位和尾數(shù)位的取值不同,還有很多特殊情況,如NAN,正無窮,負無窮,但平時基本不會用到,這里不再深入;同時由于是近似值,因此無法表示金額,表示金額建議使用BigDecimal
三. 字符型char
char屬于java中的字符型,占2字節(jié)16bit,可以賦值單字符以及整型數(shù)值, 變量初始化無默認值,包裝類Character。
如:
char a = 'a';
char a = '中';
char a = 12; // 取值范圍0~65536,因為char類型在ASCII字符編碼中,有對應(yīng)的數(shù)值,可直接做運算,輸出字符表中對應(yīng)的字符
四. 布爾型
boolean
在JVM中并沒有提供boolean專用的字節(jié)碼指令,而boolean類型數(shù)據(jù)在經(jīng)過編譯后在JVM中會通過int類型來表示,此時boolean數(shù)據(jù)4字節(jié)32位,而boolean數(shù)組將會被編碼成Java虛擬機的byte數(shù)組,此時每個boolean數(shù)據(jù)1字節(jié)占8bit.
--Java虛擬機規(guī)范
僅有兩個值true, false,變量初始化默認值false
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
相關(guān)文章
關(guān)于@SpringBootApplication與@SpringBootTest的區(qū)別及用法
這篇文章主要介紹了關(guān)于@SpringBootApplication與@SpringBootTest的區(qū)別及用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01SpringBoot項目中只執(zhí)行一次的任務(wù)寫法實現(xiàn)
有時候我們需要進行初始化工作,就說明只要進行一次的工作,本文主要介紹了SpringBoot項目中只執(zhí)行一次的任務(wù)寫法實現(xiàn),感興趣的可以了解一下2023-12-12@JsonProperty和@JSONField注解的區(qū)別解析(最新)
Jackson是一款優(yōu)秀的JSON解析庫,添加了依賴之后就可以使用對應(yīng)的注解,讓我們能夠自由的將Java對象和JSON做轉(zhuǎn)換,這篇文章主要介紹了@JsonProperty和@JSONField注解的區(qū)別,需要的朋友可以參考下2024-04-04