java基本數據類型占用空間大小以及比較大小


一.Java基本類型共有八種,基本類型可以分為三類,字符類型char,布爾類型boolean以及數值類型byte、short、int、long、float、double。數值類型又可以分為整數類型byte、short、int、long和浮點數類型float、double。JAVA中的數值類型不存在無符號的,它們的取值范圍是固定的,不會隨着機器硬件環境或者操作系統的改變而改變

基本類型 大小(字節) 默認值 封裝類 取值范圍
byte 1 (byte)0 Byte 最小值是 -128(-2^7)
最大值是 127(2^7-1)
short 2 (short)0 Short 最小值是 -32768(-2^15)
最大值是 32767(2^15 - 1)
int 4 0 Integer 最小值是 -2,147,483,648(-2^31)
最大值是 2,147,483,647(2^31 - 1)
long 8 0L Long 最小值是 -9,223,372,036,854,775,808(-2^63)
最大值是 9,223,372,036,854,775,807(2^63 -1)
float 4 0.0f Float 最小值是 1.4E-45 (2的-149次方)
最大值是 3.4028235E38 (2的128次方-1)
double 8 0.0d Double 最小值是 4.9E-324 (2的-1074次方)
最大值是 1.7976931348623157E308 (2的1024次方-1)
boolean - false Boolean true 和 false
char 2 \u0000(null) Character 最小值是 \u0000(即為0)
最大值是 \uffff(即為65,535)
void - - Void -

Java語言是一個面向對象的語言,但是Java中的基本數據類型卻不是對象,在實際使用時存在很多的不便,為了解決這個不足,在設計類時java為每個基本數據類型設計了一個對應的類,這些類統稱為包裝類(Wrapper Class),對於包裝類說,他們的用途主要包含兩種:

    1.作為和基本數據類型對應的類類型存在,方便涉及到對象的操作;

    2.包含每種基本數據類型的相關屬性如最大值、最小值等,以及相關的操作方法;

 

二.裝箱和拆箱

  裝箱:就是自動將基本數據類型轉換為包裝器類型

  拆箱:就是自動將包裝器類型轉換為基本數據類型

通過閱讀源碼,可以發現Integer、Short、Byte、Character 有緩存機制,Double 和 Float 沒有緩存機制,代碼如下:

public static Double valueOf(double var0) {
    return new Double(var0);
}
public static Short valueOf(short var0) { return var0 >= -128 && var0 <= 127 ? Short.ShortCache.cache[var0 + 128] : new Short(var0); } public static Integer valueOf(int var0) { return var0 >= -128 && var0 <= Integer.IntegerCache.high ? Integer.IntegerCache.cache[var0 + 128] : new Integer(var0); }

由於緩存機制的存在,所以下面的結果就是true,false,false:

Integer a = 100;
Integer b = 100;
Integer c = 300;
Integer d = 300;
Integer e = new Integer(100);

a == b;
c == d;
a == e;

結果為: truefalsefalse

 

裝箱拆箱的參考文檔:

https://blog.csdn.net/babycan5/article/details/81942230

 

三.java常用數據類型比較大小

1.基本類型 byte,char,int,short,long,float,long,double,直接比較大小,< ,>, == 都可以用來直接比較

2.包裝類型,需要考慮裝箱和拆箱,參見上面的內容,比如:

Integer類型比較,范圍在-128到127之間可以直接比較用==進行比較,超過范圍的,

因為Integer類型在比較大小的時候會拆箱,在超過-128到127范圍會重新new對象,此時比較==,兩個地址已經不相同

其他類型Double,Float,Long比較==返回false,比較大於,小於還是可以的。

3.基本類型和包裝類型

包裝類型和基本類型比較大小,包裝類型會先拆箱,轉為基本類型然后再作比較,所以包裝類型和基本類型可以直接使用< > ==


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM