Java基本類型占用字節(jié)數(shù)(或 bit數(shù))

前言

寫這一篇文章完全是因為我在面試的時候吃了一個閉門羹,希望有同樣疑問的各位能夠在一個地方找到這項資料,所以,我就寫下這篇文章,方便大家也提升我的映像,總之,技不如人,只能怪自己學(xué)識不精。

Java 的8大基本類型

既然說的是 Java 8大基本類型的占用字節(jié)數(shù),我們先來聊聊 Java 的8大基本類型

整型
  • int :整數(shù)類型
  • short :短整型
  • long :長整型
  • byte :字節(jié)類型
浮點型
  • float :浮點類型(單精度)
  • double :浮點類型(雙精度)
邏輯型
  • boolean :布爾型
字符型
  • char :字符型

基本數(shù)據(jù)類型自動轉(zhuǎn)換
byte -> short
char -> int -> long
float -> double
int -> float
long -> double
** 重要的一點:小可轉(zhuǎn)大,大轉(zhuǎn)小會失去精度?。?!**
低數(shù)據(jù)類型可以直接賦值給高數(shù)據(jù)類型,反之,高數(shù)據(jù)類型轉(zhuǎn)換為低數(shù)據(jù)類型必須強(qiáng)轉(zhuǎn),即提前制定數(shù)據(jù)類型,例 int a = (int) 0.0F

Java 8大基本類型所占字節(jié)數(shù)(或 bit 數(shù))

類型 存儲需求 bit 數(shù) 取值范圍 備注
int 4字節(jié) 4*8 -2147483648~2147483647 即 (-2)的31次方 ~ (2的31次方) - 1
short 2字節(jié) 2*8 -32768~32767 即 (-2)的15次方 ~ (2的15次方) - 1
long 8字節(jié) 8*8 即 (-2)的63次方 ~ (2的63次方) - 1
byte 1字節(jié) 1*8 -128~127 即 (-2)的7次方 ~ (2的7次方) - 1
float 4字節(jié) 4*8 float 類型的數(shù)值有一個后綴 F(例如:3.14F)
double 8字節(jié) 8*8 沒有后綴 F 的浮點數(shù)值(例如:3.14)默認(rèn)為 double
boolean 1字節(jié) 1*8 true、false
char 2字節(jié) 2*8 Java中,只要是字符,不管是數(shù)字還是英文還是漢字,都占兩個字節(jié)。

至于為什么 Java 中 char 無論中英文數(shù)字都占用2字節(jié),是因為 Java 中使用 Unicode 字符,所有字符均以2個字節(jié)存儲。
而如果需要識別字符是否為中文,可以使用正則匹配式:

String _regex = "[\\u4e00-\\u9fa5]";

補(bǔ)充

Java有一個能夠表示任意精度的算書包,通常稱為“大數(shù)值”(big number)。雖然被稱為大數(shù)值,但它并不是一種Java類型,而是一個Java對象。

如果基本的整數(shù)和浮點數(shù)精度不能夠滿足需求,那么可以使用java.math包中的兩個很有用的類:BigInteger、BigDecimal(Android SDK中也包含了java.math包以及這兩個類)這兩個類可以處理包含任意長度數(shù)字序列的數(shù)值。BigInteger類實現(xiàn)了任意精度的整數(shù)運(yùn)算,BigDecimal實現(xiàn)了任意精度的浮點數(shù)運(yùn)算。具體的用法可以參見Java API。

現(xiàn)在金融類產(chǎn)品大熱,建議金融類 App 的工程師在開發(fā)初期就直接使用 BigDecimal 數(shù)據(jù)對象來記錄金融數(shù)據(jù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容