Java基礎(chǔ)(一)
自從Java發(fā)布以來(lái)搀继,基本數(shù)據(jù)類型就是Java語(yǔ)言的一部分,分別是byte, short, int, long, char, float, double, boolean.
其中:
整型:byte, short, int, long
字符型:char
浮點(diǎn)型:float, double
布爾型:boolean
在詳細(xì)介紹之前卦碾,先科普一下廉嚼,Java中最小的計(jì)算單元為字節(jié)早像,1字節(jié)=8位(bit)惕澎。
一. 整型
Java中整型數(shù)據(jù)屬于有符號(hào)數(shù),即第一個(gè)bit位為0表示正整數(shù),第一個(gè)bit位為1表示負(fù)整數(shù)栖博。在計(jì)算機(jī)中負(fù)數(shù)由補(bǔ)碼進(jìn)行表示,那么補(bǔ)碼如何計(jì)算呢厢洞?
補(bǔ)碼=源碼取反 + 1仇让;
如:
22,在計(jì)算機(jī)中的表示為00010110躺翻,
-22丧叽,取反:11101001,加1:11101010
byte
byte屬于Java中的整型公你,長(zhǎng)度為1字節(jié)8bit踊淳,取值10000000(-128)到 01111111(127),變量初始化默認(rèn)值為0陕靠,包裝類Byte
short
short屬于Java中的整型迂尝,長(zhǎng)度為2字節(jié)16bit脱茉,取值10000000 00000000(-32768)到 01111111 11111111(32767),變量初始化默認(rèn)值為0垄开,包裝類Short
int
int屬于Java中的整型琴许,長(zhǎng)度為4字節(jié)32bit,取值-2^31 (-2,147,483,648)到 2^31-1(2,147,483,647)溉躲,變量初始化默認(rèn)值為0虚吟,包裝類Integer
long
long屬于Java中的整型,長(zhǎng)度為8字節(jié)64bit签财,取值-2^63 (-9,223,372,036,854,775,808)到 2^63-1(9,223,372,036,854,775,8087)串慰,變量初始化默認(rèn)值為0或0L,包裝類Long
二. 浮點(diǎn)型
Java中浮點(diǎn)型數(shù)據(jù)無(wú)法由二進(jìn)制直接表示唱蒸,而是一種對(duì)于實(shí)數(shù)的近似數(shù)據(jù)表示法邦鲫,它遵循IEEE 754標(biāo)準(zhǔn)
float
float屬于Java中的浮點(diǎn)型,也叫單精度浮點(diǎn)型神汹,長(zhǎng)度為4字節(jié)32bit庆捺,變量初始化默認(rèn)值0.0f,包裝類Float
1. float結(jié)構(gòu)
包含三部分:符號(hào)位屁魏、指數(shù)位滔以、尾數(shù)位
符號(hào)位(S) | 指數(shù)位(E) | 尾數(shù)位(M) | |
---|---|---|---|
長(zhǎng)度 | 1bit | 8bit | 23bit |
說(shuō)明 | 0表示正數(shù),1表示負(fù)數(shù) | 格式為 在這里插入圖片描述
|
| 形式為1.M或0.M桃漾。其中當(dāng)E=0時(shí)坏匪,取1.M,稱為正規(guī)形式撬统,當(dāng)E适滓!= 0時(shí),取0.M恋追,稱為非正規(guī)形式 |
2. float取值
正規(guī)形式:根據(jù)上面公式很容易計(jì)算出float的取值范圍為:
(最小值凭迹,當(dāng)符號(hào)位S取1,指數(shù)位E取255)
(最大值苦囱,當(dāng)符號(hào)位S取0嗅绸,指數(shù)位E取255)
能取到其間的近似數(shù)據(jù)。
注意:根據(jù)指數(shù)位和尾數(shù)位的取值不同沿彭,還有很多特殊情況朽砰,如NAN,正無(wú)窮喉刘,負(fù)無(wú)窮瞧柔,但平時(shí)基本不會(huì)用到,這里不再深入睦裳;同時(shí)由于是近似值造锅,因此無(wú)法表示金額,表示金額建議使用BigDecimal
double
double屬于Java中的浮點(diǎn)型廉邑,也叫雙精度浮點(diǎn)型哥蔚,長(zhǎng)度為8字節(jié)64bit,變量初始化默認(rèn)值0.0d蛛蒙,包裝類Double
1. double結(jié)構(gòu)
包含三部分:符號(hào)位糙箍、指數(shù)位、尾數(shù)位
符號(hào)位(S) | 指數(shù)位(E) | 尾數(shù)位(M) | |
---|---|---|---|
長(zhǎng)度 | 1bit | 11bit | 52bit |
說(shuō)明 | 0表示正數(shù)牵祟,1表示負(fù)數(shù) | 格式為 image
|
) | 形式為1.M或0.M咕晋。其中當(dāng)E=0時(shí),取1.M收奔,稱為正規(guī)形式掌呜,當(dāng)E!= 0時(shí)坪哄,取0.M质蕉,稱為非正規(guī)形式 |
2. double取值
正規(guī)形式:根據(jù)上面公式很容易計(jì)算出double的取值范圍為:
(最小值,當(dāng)符號(hào)位S取1翩肌,指數(shù)位E取2047)
(最大值饰剥,當(dāng)符號(hào)位S取0,指數(shù)位E取2047)
能取到其間的近似數(shù)據(jù)摧阅。
注意:根據(jù)指數(shù)位和尾數(shù)位的取值不同汰蓉,還有很多特殊情況,如NAN棒卷,正無(wú)窮顾孽,負(fù)無(wú)窮,但平時(shí)基本不會(huì)用到比规,這里不再深入若厚;同時(shí)由于是近似值,因此無(wú)法表示金額蜒什,表示金額建議使用BigDecimal
三. 字符型
char
char屬于java中的字符型测秸,占2字節(jié)16bit,可以賦值單字符以及整型數(shù)值, 變量初始化無(wú)默認(rèn)值,包裝類Character霎冯。
如:
char a = 'a';
char a = '中';
char a = 12; // 取值范圍0~65536铃拇,因?yàn)閏har類型在ASCII字符編碼中,有對(duì)應(yīng)的數(shù)值沈撞,可直接做運(yùn)算慷荔,輸出字符表中對(duì)應(yīng)的字符
四. 布爾型
boolean
在JVM中并沒(méi)有提供boolean專用的字節(jié)碼指令,而boolean類型數(shù)據(jù)在經(jīng)過(guò)編譯后在JVM中會(huì)通過(guò)int類型來(lái)表示缠俺,此時(shí)boolean數(shù)據(jù)4字節(jié)32位显晶,而boolean數(shù)組將會(huì)被編碼成Java虛擬機(jī)的byte數(shù)組,此時(shí)每個(gè)boolean數(shù)據(jù)1字節(jié)占8bit.
--Java虛擬機(jī)規(guī)范
僅有兩個(gè)值true, false壹士,變量初始化默認(rèn)值false