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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java的知识点20——包装类基本知识、包装类的用途、自动装箱和拆箱、包装类的缓存问题

發布時間:2025/4/16 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java的知识点20——包装类基本知识、包装类的用途、自动装箱和拆箱、包装类的缓存问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

包裝類基本知識

將基本數據類型存儲到Object[]數組或集合中的操作

? ? ? ? ? ?包裝類均位于java.lang包

“數字型”都是java.lang.Number的子類Number類是抽象類,因此它的抽象方法,所有子類都需要提供實現。Number類提供了抽象方法:intValue()、longValue()、floatValue()、doubleValue(),意味著所有的“數字型”包裝類都可以互相轉型。


包裝類的用途

對于包裝類來說,這些類的用途主要包含兩種:

? ? ? 1. 作為和基本數據類型對應的類型存在,方便涉及到對象的操作,如Object[]、集合等的操作

? ? ??2. 包含每種基本數據類型的相關屬性如最大值、最小值等,以及相關的操作方法(這些操作方法的作用是在基本數據類型包裝類對象字符串之間提供相互之間的轉化!)。

包裝類的使用

package cn.dym09;public class Test09 {void testInteger() {Integer int1=new Integer(10);Integer int2=Integer.valueOf(20); //官方推薦這種說法// Integer對象轉化成intint a=int1.intValue();//字符串轉化成Integer對象Integer int3=Integer.parseInt("334");Integer int4=new Integer("999");//Integer對象轉化成字符串String str1=int3.toString();//一些常見int類型相關的常量System.out.println("int能表示的最大整數:"+Integer.MAX_VALUE);}public static void main(String [] args) {Test09 test=new Test09();test.testInteger();} }


自動裝箱和拆箱

自動裝箱和拆箱就是將基本數據類型包裝類之間進行自動的互相轉換。

自動裝箱:基本類型的數據處于需要對象的環境中時,會自動轉為“對象”。

? ? ? ? ? ? ? ? ? 原因:以Integer為例:在JDK1.5以前,這樣的代碼 Integer i = 5 是錯誤的,必須要通過Integer i = new Integer(5) 這樣的語句來實現基本數據類型轉換成包裝類的過程;而在JDK1.5以后,Java提供了自動裝箱的功能,因此只需Integer i = 5這樣的語句就能實現基本數據類型轉換成包裝類,這是因為JVM為我們執行了Integer i = Integer.valueOf(5)這樣的操作,這就是Java的自動裝箱。

自動拆箱:每當需要一個值時,對象會自動轉成基本數據類型,沒必要再去顯式調用intValue()doubleValue()等轉型方法。

? ? ? ? ? ? ? ? ? 如 Integer i = 5;int j = i; 這樣的過程就是自動拆箱。

總結:自動裝箱過程是通過調用包裝類的valueOf()方法實現的,而自動拆箱過程是通過調用包裝類的 xxxValue()方法實現的(xxx代表對應的基本數據類型,如intValue()、doubleValue()等

package cn.dym10;public class cl01 {public static void main(String [] args) {Integer b=23; //自動裝箱int a=new Integer(20); //自動拆箱//下面的問題需要注意:Integer c=null;int d=c; //此處其實就是:c.intValue(),因此拋空指針異常} }

包裝類的緩存問題

整型、char類型所對應的包裝類,在自動裝箱時,對于-128~127之間的值會進行緩存處理,其目的是提高效率

緩存處理的原理為:如果數據在-128~127這個區間,那么在類加載時就已經為該區間的每個數值創建了對象,并將這256個對象存放到一個名為cache的數組中。每當自動裝箱過程發生時(或者手動調用valueOf()時),就會先判斷數據是否在該區間,如果在則直接獲取數組中對應的包裝類對象的引用,如果不在該區間,則會通過new調用包裝類的構造方法來創建對象。

?1. IntegerCache類為Integer類的一個靜態內部類,僅供Integer類使用。

?2. 一般情況下 IntegerCache.low為-128IntegerCache.high為127IntegerCache.cache為內部類的一個靜態屬性

package cn.dym10;public class test01 {public static void main(String [] args) {Integer in1=-128;Integer in2=-128;System.out.println(in1==in2); //true 在緩存范圍內System.out.println(in1.equals(in2)); //trueInteger in3=1234;Integer in4=1234;System.out.println(in3==in4); //false 不在緩存范圍內System.out.println(in3.equals(in4)); //true} }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?包裝類在自動裝箱時為了提高效率,對于-128~127之間的值會進行緩存處理。超過范圍后,對象之間不能再使用==進行數值的比較,而是使用equals方法。

總結

以上是生活随笔為你收集整理的Java的知识点20——包装类基本知识、包装类的用途、自动装箱和拆箱、包装类的缓存问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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