作為程序員喷众,對(duì)數(shù)據(jù)類型應(yīng)該是一清二楚的,但是有些時(shí)候長時(shí)間不用難免會(huì)出現(xiàn)記憶混淆錯(cuò)誤的時(shí)候紧憾,尤其是加班加點(diǎn)的時(shí)候到千。本人記憶不好,雖然當(dāng)時(shí)都記住了赴穗,但是一段時(shí)間不用憔四,就會(huì)忘的一干二凈膀息,這是個(gè)憂傷的故事。在這里整理一下關(guān)于數(shù)據(jù)類型的知識(shí)了赵。
1.基礎(chǔ)中的基礎(chǔ):位潜支,字,字節(jié)
位(bit):是電子計(jì)算機(jī)中最小的數(shù)據(jù)單位柿汛。每一位的狀態(tài)只能是0或1冗酿。
字節(jié)(Byte):8個(gè)位構(gòu)成1個(gè)"字節(jié)",它是存儲(chǔ)空間的基本計(jì)量單位苛茂。
字:"字"由若干個(gè)字節(jié)構(gòu)成已烤,字的位數(shù)叫做字長,不同檔次的機(jī)器有不同的字長妓羊。例如一臺(tái)8位機(jī),它的1個(gè)字就等于1個(gè)字節(jié)稍计,字長為8位躁绸。如果是一臺(tái)16位機(jī),那么臣嚣,它的1個(gè)字就由2個(gè)字節(jié)構(gòu)成净刮,字長為16位。字是計(jì)算機(jī)進(jìn)行數(shù)據(jù)處理和運(yùn)算的單位硅则。
KB:只是這時(shí)K表示1024淹父,也就是2的10次方。1KB表示1K個(gè)Byte怎虫,也就是1024個(gè)字節(jié)暑认。
KB 1KB=1024B
MB 1MB=1024KB
GB 1GB=1024MB
TB 1TB=1024GB
計(jì)算機(jī)的性能越強(qiáng),一次運(yùn)算所能處理的“位”越多大审,例如16位計(jì)算機(jī)一次運(yùn)算能處理16個(gè)“位”蘸际,即兩個(gè)“字節(jié)”,稱為一個(gè)“字”徒扶。所以粮彤,一個(gè)“字”有幾個(gè)“字節(jié)”構(gòu)成和計(jì)算機(jī)的型號(hào)有關(guān)。例如32位計(jì)算機(jī)中姜骡,一個(gè)“字”就是四個(gè)“字節(jié)”导坟。
Java中數(shù)據(jù)類型知識(shí)
Java中的簡(jiǎn)單類型從概念上分為四種:實(shí)數(shù)、整數(shù)圈澈、字符惫周、布爾值。但是有一點(diǎn)需要說明的是士败,Java里面只有八種原始類型闯两,其列表如下:
實(shí)數(shù):double褥伴、float
整數(shù):byte、short漾狼、int重慢、long
字符:char
布爾值:boolean
復(fù)雜類型和基本類型的內(nèi)存模型本質(zhì)上是不一樣的,簡(jiǎn)單數(shù)據(jù)類型的存儲(chǔ)原理是這樣的:所有的簡(jiǎn)單數(shù)據(jù)類型不存在“引用”的概念逊躁,簡(jiǎn)單數(shù)據(jù)類型都是直接存儲(chǔ)在內(nèi)存中的內(nèi)存棧上的似踱,數(shù)據(jù)本身的值就是存儲(chǔ)在棧空間里面稽煤,而Java語言里面只有這八種數(shù)據(jù)類型是這種存儲(chǔ)模型核芽;而其他的只要是繼承于Object類的復(fù)雜數(shù)據(jù)類型都是按照J(rèn)ava里面存儲(chǔ)對(duì)象的內(nèi)存模型來進(jìn)行數(shù)據(jù)存儲(chǔ)的,使用Java內(nèi)存堆和內(nèi)存棧來進(jìn)行這種類型的數(shù)據(jù)存儲(chǔ)酵熙,簡(jiǎn)單地講轧简,“引用”是存儲(chǔ)在有序的內(nèi)存棧上的,而對(duì)象本身的值存儲(chǔ)在內(nèi)存堆上的匾二。
byte:8位哮独,最大存儲(chǔ)數(shù)據(jù)量是255,存放的數(shù)據(jù)范圍是-128~127之間察藐。
short:16位皮璧,最大數(shù)據(jù)存儲(chǔ)量是65536,數(shù)據(jù)范圍是-32768~32767之間分飞。
int:32位悴务,最大數(shù)據(jù)存儲(chǔ)容量是2的32次方減1,數(shù)據(jù)范圍是負(fù)的2的31次方到正的2的31次方減1譬猫。
long:64位讯檐,最大數(shù)據(jù)存儲(chǔ)容量是2的64次方減1,數(shù)據(jù)范圍為負(fù)的2的63次方到正的2的63次方減1删窒。
float:32位裂垦,數(shù)據(jù)范圍在3.4e-45~1.4e38,直接賦值時(shí)必須在數(shù)字后加上f或F肌索。
double:64位蕉拢,數(shù)據(jù)范圍在4.9e-324~1.8e308,賦值時(shí)可以加d或D也可以不加诚亚。
boolean:只有true和false兩個(gè)取值晕换。
char:16位,存儲(chǔ)Unicode碼站宗,用單引號(hào)賦值闸准。
Java決定了每種簡(jiǎn)單類型的大小。這些大小并不隨著機(jī)器結(jié)構(gòu)的變化而變化梢灭。這種大小的不可更改正是Java程序具有很強(qiáng)移植能力的原因之一夷家。