日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

八种基本类型的包装类你真的懂了?

發布時間:2023/11/28 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 八种基本类型的包装类你真的懂了? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

進來先做個題:

        Integer i1 = 10;Integer i2 = 10;Integer i3 = 128;Integer i4 = 128;Integer i5 = 118;Integer i6 = new Integer(10);Float f1 = 10.0f;Float f2 = 10.0f;System.out.println("i1 == i2 ? " + (i1 == i2));System.out.println("i3 == i4 ? " + (i3 == i4));System.out.println("i1 == i6 ? " + (i1 == i6));System.out.println("10 == i6 ? " + (10 == i6));System.out.println("129 == i3 ? " + (128 == i3));System.out.println("i4 == i2 + i5 ? " + (i4 == i2 + i5));System.out.println("128 == i2 + i5 ? " + (128 == i2 + i5));System.out.println("f1 == f2 ? " + (f1 == f2));System.out.println("10.0f == f2 ? " + (10.0f == f2));

答案是多少呢?暫且不談,最后再公布。

基本類型與包裝類的區別:

1.包裝類型可以為null而基本類型不可以。

? 這點在pojo類里面很有用,因為在數據庫里面定義的基本類型字段有可能值為null,
而這時如果將null賦值給基本類型屬性就會報就會拋出 NullPointerException異常。
所以在與數據庫交互的屬性都應該定義為包裝類型,除非明確的知道表中字段為非空字段。

2.包裝類可以用于泛型,而基本類型不可以。

3.包裝類型對象存儲在堆中,基本類型存儲在棧中

包裝類型通過創建對象來存儲數據,而對象是存儲在jvm的堆中的,在棧中存儲對象的引用,也就是對象所在堆中的地址。

基本類型在棧中存儲的就是具體的數據,所以基本類型要比包裝類型更加高效且節省空間。

4.自動裝箱和自動拆箱

把基本類型轉換為包裝類型的的過程叫做裝箱,把包裝類型轉換成基本類型的過程叫做拆箱。在Java SE5之后,java虛擬機會自動完成裝拆箱的操作。

/* 自動裝箱 當數值在-128 ~ 127 之間會調用靜態的valueOf(int i)方法進行裝箱,這是java虛擬機利用常量池技術默認創建了數值[-128,127] 的相應類型的緩存數據,返回的將是數值在常量池中的地址。當數值在這個范圍之外才會去new一個對應類型的包裝類*/
Integer i = 10; // 自動裝箱,虛擬機將會自動轉換成:Integer i = Integer.valueOf(10);Integer i = 128; // 自動裝箱,虛擬機將會自動轉換成:Integer i = new Integer(128);int j = i; // 自動拆箱,虛擬機將會自動轉換成:int j = i.intValue();

包裝類和常量池

Java 基本類型的包裝類中Byte,Short,Integer,Long,Character,Boolean都實現了常量池技術。

  • Byte,Short,Integer,Long,包裝類默認創建了數值[-128,127] 的相應類型的緩存數據。
  • Character創建了數值在[0,127]范圍的緩存數據。
  • Boolean 直接返回True or False。

如果超出對應范圍仍然會去創建新的對象。?

最后

這時候你是否已經知道答案了呢?

        Integer i1 = 10;Integer i2 = 10;Integer i3 = 128;Integer i4 = 128;Integer i5 = 118;Integer i6 = new Integer(10);Float f1 = 10.0f;Float f2 = 10.0f;System.out.println("i1 == i2 ? " + (i1 == i2)); // trueSystem.out.println("i3 == i4 ? " + (i3 == i4)); // falseSystem.out.println("i1 == i6 ? " + (i1 == i6)); // falseSystem.out.println("10 == i6 ? " + (10 == i6)); // trueSystem.out.println("129 == i3 ? " + (128 == i3)); // trueSystem.out.println("i4 == i2 + i5 ? " + (i4 == i2 + i5)); // trueSystem.out.println("128 == i2 + i5 ? " + (128 == i2 + i5)); // trueSystem.out.println("f1 == f2 ? " + (f1 == f2)); // falseSystem.out.println("10.0f == f2 ? " + (10.0f == f2)); // true

?

總結

以上是生活随笔為你收集整理的八种基本类型的包装类你真的懂了?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。