java基礎資料型別 (Elementary Data Type)

來源:互聯網
上載者:User

標籤:格式   實現   中斷   ram   位元組   box   har   斷點調試   src   

概述

java八大基礎資料型別 (Elementary Data Type)byte,short,int,long,float,double,char,boolean,他們分別對應有各自的封裝。java為啥要保留基礎資料型別 (Elementary Data Type)?因為基礎資料型別 (Elementary Data Type)常用且存於棧中,佔用空間少,效能比使用對象好,且基礎資料型別 (Elementary Data Type)有預設值,而對象的預設值為null。為啥還要有class對象和基礎資料型別 (Elementary Data Type)對應呢?因為java是物件導向語言,基礎資料型別 (Elementary Data Type)的存在是因為效能的優勢,與之對應的封裝類就是為了符合物件導向開發,特別是在實現了自動裝箱拆箱操作以後。

擷取基礎資料型別 (Elementary Data Type)
  • 通過Class.getPrimitiveClass("byte")擷取byte.class類型

  • Byte.class==byte.class返回false

  • Class.getPrimitiveClass("byte")==byte.class返回true

裝箱拆箱

代碼如下

public void packingAndUnboxing(){        int a=1;        Integer b=2;        a=b;    }

執行 javap -c className.class 得出如

解析位元組碼

  • 行標0-1是對int a=1的解析,對基礎資料型別 (Elementary Data Type)賦值

  • 行標2-3是對Integer b=2的解析,注意後面有一個Integer.valueOf(),意味這這句正確執行的是Integer b=Integer.valueOf(2),需要驗證的可以在valueOf方法中斷點調試

  • 行標6-8是執行a=b這裡實際執行的代碼是a=b.intValue()

java的自動裝箱拆箱是由編譯器就處理好的

基本類型對應封裝類的緩衝

在某些封裝類中,定義了內部類作為緩衝即執行個體化時不會去new,直接取緩衝中的資料,我們可以看看這樣一段代碼

Integer a=1;Integer b=1;a=b?

答案是a=b,即使a,b都是對象,前面我們已經說過Integer a=1實際上是Integer a=Integer.valueOf(1),方法源碼如下

public static Integer valueOf(int i) {    if (i >= IntegerCache.low && i <= IntegerCache.high)        return IntegerCache.cache[i + (-IntegerCache.low)];    return new Integer(i);}

也就是說如果我們的值在緩衝最小值和最大值之間,那麼就直接使用緩衝中的值,不會去new,a,b使用的同一個緩衝自然相等。

那麼有哪些封裝類型具有緩衝呢

  • Byte緩衝範圍為-128到127,

  • Short緩衝範圍-128到127

  • Integer預設緩衝範圍-128到127,可設定最大值,如:在VM中加入-Djava.lang.Integer.IntegerCache.high=1000,最大值就為1000

  • Long緩衝範圍-128到127

  • Character緩衝範圍0-127

Character範圍0-127是緩衝常用的ASCII字元,範圍-128到127表示一個位元組,因此緩衝幾乎也是這個範圍。詳情請看電腦儲存資料的格式

不管是否有緩衝,使用new關鍵字建立的都不會使用緩衝中的資料,如Integer a=1和Integer b=new Integer(1)不等

歡迎加入學習交流群569772982,大家一起學習交流。

java基礎資料型別 (Elementary Data Type)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.