天天看點

Java基本類型

轉自http://myeyeofjava.iteye.com/blog/1738143

1G=1024M=1024K=1024BYTE=8BIT 

1 byte = 1位元組  = 8bit 可表達 2的八次方個數字    = 256 

1 short= 2位元組  = 16bit 可表達2的十六次方個數字  = 65536 約6W 

1 char = 2位元組  = 16bit 可表達2的十六次方個數字  = 65536 約6W 

1 int  = 4位元組  = 32bit 可表達2的32次方個數      = 4294967296 約42億 

1 float= 4位元組  = 32bit 可表達2的32次方個數      = 4294967296 約42億 

1 long = 8位元組  = 64bit 可表達2的64次方個數      = 18446744073709551616 約184億億 184*10^16次方 

1 double= 8位元組  = 64bit 可表達2的64次方個數     = 18446744073709551616 約184億億 

知道這些,才能了解bitmap需要多大的記憶體來計算10億個數字裡是否有重複數字,每個數字是一個IP,可見存儲這些資料隻需要一個int大小的記憶體已經足以,但運算還是需要記憶體的。 

bitmap是比hash更加優越的地方在于此吧 

1個IP 192.168.101.129 為12位的資料,也就是說有10億個12位的數字。1個12位的數字99999999999 999億那麼需要一個double類型的數字來表示這個12位的數字,1個double類型占用8位元組,也就是大概需要10億*8位元組來做這個事情,總共需要記憶體10億byte,約0.93G記憶體即可。

資料類型                   大小(二進制位數)                 範圍                                                                                 預設值 

byte(位元組) 	         8                     -128 - 127                                                                                             0
shot(短整型)            16                   -32768 - 32768                                                                                      0
int(整型)                  32                    -2147483648-2147483648                                                                    0
long(長整型)            64                   -9233372036854477808-9233372036854477808                                0        
float(浮點型)            32                   -3.40292347E+38-3.40292347E+38                                                     0.0f
double(雙精度)	        64                 -1.79769313486231570E+308-1.79769313486231570E+308              0.0d
char(字元型)           16                  ‘ \u0000 - u\ffff ’                                                                                      ‘\u0000 ’      
boolean(布爾型)      1                   true/false                                                                                                 false      

摘自http://www.blogjava.net/stevenjohn/archive/2013/10/18/405416.html

JAVA基本資料類型所占位元組數是多少?

byte     1位元組               

short    2位元組               

int      4位元組               

long     8位元組               

char     2位元組(C語言中是1位元組)可以存儲一個漢字

float    4位元組               

double   8位元組               

boolean  false/true(理論上占用1bit,1/8位元組,實際處理按1byte處理)       

JAVA是采用Unicode編碼。每一個位元組占8位。你電腦系統應該是 32位系統,這樣每個int就是 4個位元組      
其中一個位元組由8個二進制位組成

      
Java一共有8種基本資料類型(原始資料類型):     
類型  存儲要求 範圍(包含) 預設值 包裝類
整 int 4位元組(32位) -231~ 231-1 0 Integer
數 short 2位元組(16位) -215~215-1 0 Short
類 long 8位元組(64位) -263~263-1 0 Long
型 byte 1位元組(8位) -27~27-1 0 Byte
浮點 float 4位元組(32位) -3.4e+38 ~ 3.4e+38 0.0f Float
類型 double 8位元組(64位) -1.7e+308 ~ 1.7e+308 0 Double
字元 char 2位元組(16位) u0000~uFFFF(‘’~‘?’) ‘0’ Character
   (0~216-1(65535))  
布爾 boolean 1/8位元組(1位) true, false FALSE Boolean      

在移動開發中由于移動裝置記憶體的局限性,往往需要考慮使用的資料類型所占用的位元組數。下面簡單介紹下Java中幾種基本資料類型,以加深記憶。

在Java中一共有8種基本資料類型,其中有4種整型,2種浮點類型,1種用于表示Unicode編碼的字元單元的字元類型和1種用于表示真值的boolean類型。(一個位元組等于8個bit)

1.整型

類型              存儲需求     bit數    取值範圍      備注

int                 4位元組           4*8 

short             2位元組           2*8    -32768~32767

long              8位元組           8*8

byte              1位元組           1*8     -128~127

2.浮點型

float              4位元組           4*8                  float類型的數值有一個字尾F(例如:3.14F)

double          8位元組           8*8                       沒有字尾F的浮點數值(如3.14)預設為double類型

3.char類型

類型              存儲需求     bit數     取值範圍      備注

char              2位元組          2*8

4.boolean類型

類型              存儲需求    bit數    取值範圍      備注

boolean        1位元組          1*8      false、true

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

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

http://blog.csdn.net/witsmakemen/article/details/8974200

int常見為4個位元組,跟作業系統有關系。
turbo c(以及Turbo c的一些衍生編譯器,他們用的一套編譯程式)是dos時代的編譯器,是上世紀80年代的産物,嚴重過時,屬于老掉牙的産品,他們編譯出來的程式是16位作業系統dos下的程式,是以長度為16位,即兩個位元組。windows為了相容dos,是以turbo c生成的檔案也可以在windows中運作。
其他一般就都是4個位元組了。      

作業系統16位的時候,int 2位元組,作業系統32位的時候,int 4位元組,由于32位系統之前占主流地位,實際現在就算是64位系統,出于相容性考慮,int也是4位元組的

Java基本類型

作者:沙漏喲

出處:計算機的未來在于連接配接

本文版權歸作者和部落格園共有,歡迎轉載,請留下原文連結

微信随緣擴列,聊創業聊産品,偶爾搞搞技術