@
目錄- 一、前言(可忽略)
- 二、包裝類的認知
- 三、包裝類的愛與恨
- 四、包裝類的例外
- 五、包裝類的方法
一、前言(可忽略)
作者是一位自學JAVA的小白,通過網上視頻學習和自己對包裝類的理解,現將自己對包裝類的認知描述如下:(希望能與各位同行好友共同分享自己所學的java知識,同時,也熱切期望各位同行前輩能夠幫助作者指出不足,讓小白的編程技術能更上一層樓,感謝各位同行大佬,
二、包裝類的認知
學過Java的帥鍋都知道8種基本資料型別對應8種包裝型別(長的也差不多,基本上都是首字母大寫,除了int和char,英文有點長),8種包裝類也屬于參考資料型別,還有String也是(具體可看小白的String簡介),
為什么要提供8種包裝類?
簡單來說就是因為8種基本型別不夠用(小白理解),JAVA是完全面向物件開發,在開發程序中,我們不可避免的使用到物件和多型,面向物件開發,也造成了我們對需要使用對應參考變數的基本資料型別常量的煩惱,
? ?? 基本資料型別 ? ?? ? ?? ? ?? ? ?? 包裝型別
? ?? byte ? ?? ? ?? ? ?? ? ??? ?? ? ? java.lang.Byte(父類Number)
? ?? short ? ?? ? ?? ? ?? ? ??? ?? ? ?java.lang.Short(父類Number)
? ?? int ? ?? ? ?? ? ?? ? ?? ?? ???? java.lang.Integer(父類Number)
? ?? long ? ???????? ? ?? ?? ?????? java.lang.Long(父類Number)
? ?? float ? ?? ? ?? ? ?? ? ??? ?? ? ? java.lang.Float(父類Number)
? ?? double ?????????? ??? ?? ????java.lang.Double(父類Number)
? ?? boolean ?????????? ??? ?? ???java.lang.Boolean(父類Object)
? ?? char ?????????? ??? ?? ??????java.lang.Character(父類Object)
三、包裝類的愛與恨
裝箱:基本資料型別轉換成參考資料型別
????手動裝箱:
Integer i=new Integer(100);//照葫蘆畫瓢,i保存的是在堆記憶體中的Integer物件的記憶體地址,Integer物件指向整數常量地址池中的"100",
????自動裝箱:
Integer i=100;//照葫蘆畫瓢
拆箱:參考資料型別轉換成基本資料型別
????手動拆箱:
int j=i.intValue();//照葫蘆畫瓢
????手動拆箱的方法:
* byte byteValue() 以byte形式回傳指定的數值
* abstract double doubleValue 以double形式回傳指定的數值
* abstract float floatValue()以float形式回傳指定的數值
* abstract int intValue()以int形式回傳指定的數值
* abstract long longValue()以long形式回傳指定的數值
* short shortValue以short形式回傳指定的數值
????自動拆箱:
int j=i;//照葫蘆畫瓢
重點:
long Y=1000;
Long A=1000L;
System.out.println(Y==A);//參考資料型別與基本資料型別比較,自動拆箱,結果為true
Integer I=1000;
Float F=1000.0;
System.out.println(I==F);//提示出錯,數值雖相同,但不同包裝型別不可直接比較)
Integer X=100;
Integer C=100
System.out.println(X==C);//true,兩物件的記憶體地址相同
```c
Integer M=100;
System.out.println(M+1);//true,包裝型別的變數在進行四則運算時會自動拆箱
注意:為了提高程式的執行效率,Java將所有-128~127之間所有的包裝物件都提前創建到了方法區的“整數型常量池中”,所以當使用"=="比較時,由于是使用"="直接賦記憶體地址(整數型常量池中的),所以兩變數記憶體地址相同,結果為true
Integer H=100;
java.lang.Integer D=new java.lang.Integer(100);
System.out.println(H==D);//false D和H存放的記憶體地址不一樣
java.lang.Integer x=1000;
java.lang.Integer b=0;
java.lang.Integer c=1000;
java.lang.Long N=1000L;
System.out.println(x.equals(c+b));//true, 先進行b和C的自動拆箱,求出b+c并自動裝箱,再呼叫euqals方法進行物件參考的值比較,
System.out.println(N.equals(c+b));//false
java.lang.Integer K=1000;
java.lang.Integer Q=0;
java.lang.Long A=1000L;
System.out.println(A==(K+Q));首先A進行自動拆箱,K+Q由于進行四則運算自動拆箱,比較物件的值,由于JAVA在對型別轉換時會自動向上轉,int->long
注意:equals在比較不同包裝型別時,由于型別不同會回傳false
通過訪問包裝類的常量,來獲取最大值和最小值(獲取型別取值范圍)
//比如int的取值范圍
java.lang.Integer x=1000;
System.out.println(x.MIN_VALUE);//-2147483648
System.out.println(x.MAX_VALUE);//2147483647
四、包裝類的例外
Long l=new Long("Chinese");
long I=l;
System.out.println(I);//例外報錯:NumberFarmatException
//編譯沒錯,但運行的時候會出現例外,只能是數字包裝,
Long X=new Long("123");
long Y=X;
System.out.println(Y);//123
五、包裝類的方法
static int parseInt(String s)
作用:靜態方法,傳參String,回傳int,類名呼叫
int RetValue=https://www.cnblogs.com/PMJiangXiaoBai/p/java.lang.Integer.parseInt("123");//String->int,照葫蘆畫瓢
System.out.println(RetValue);//123
static String toBinaryString(int)
作用:靜態,將int以十進制轉化成二進制
System.out.println(java.lang.Integer.toBinaryString(10));//1010
static String toHexString(int x)
作用:靜態,將int以十進制轉化成十六進制
System.out.println(java.lang.Integer.toHexString(17));//11
static String toOctalString(int)
作用:靜態,將int以十進制轉換成八進制
System.out.println(java.lang.Integer.toOctalString(10));//12
static Integer valueOf(int i)
作用:靜態,型別互轉,將i以int轉換成Integer
System.out.println(java.lang.Integer.valueOf(100));//100
static Integer valueOf(String x)
作用:靜態,型別互轉,將x以String轉換成Integer
System.out.println(java.lang.Integer.valueOf("1000"));//1000,String只能以數字形式輸入,否則報NumberFormatException錯誤
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/267284.html
標籤:Java
