1. 程式人生 > >Java包裝類

Java包裝類

常量 wrapper 字符型 nbsp 技術分享 class 常量數組 http pri

一.什麽是包裝類

  技術分享圖片

  Java中的基本數據類型沒有方法和屬性,而包裝類就是為了讓這些擁有方法和屬性,實現對象化交互。

技術分享圖片

數值型包裝類都繼承至Number,而字符型和布爾型繼承至Object。

二.基本數據和包裝類之間的轉換

  裝箱:基本數據類型轉換為包裝類;

  拆箱:包裝類轉換為基本數據類型。 

技術分享圖片
 1 package com.swpu;
 2 
 3 public class WrapperTestOne {
 4     public static void main(String[] args){
 5         //1.自動裝箱
 6
int t1=1; 7 Integer t2=t1; 8 //2.手動裝箱 9 Integer t3=new Integer(t1); 10 System.out.println("int類型t1="+t1); 11 System.out.println("自動裝箱,Integer類型對象t2="+t2); 12 System.out.println("手動裝箱,Integer類型t3="+t3); 13 14 15 //
1.自動拆箱 16 int t4=t2; 17 //2.手動拆箱 18 //通過intValue()方法返回int值,還可以利用其他方法裝換為其他類型 19 int t5=t2.intValue(); 20 System.out.println("自動拆箱,int型t4="+t4); 21 System.out.println("手動拆箱,int型t5="+t5); 22 } 23 24 }
View Code

三.基本數據類型和包裝類的轉換

  通過包裝類Integer.toString()將整型轉換為字符串;

  通過Integer.parseInt()將字符串轉換為int類型;

  通過valueOf()方法把字符串轉換為包裝類然後通過自動拆箱。

技術分享圖片
 1 package com.swpu;
 2 
 3 public class WrapperTestTwo {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         //基本數據類型轉換為字符串
 8         int t1=12;
 9         String t2=Integer.toString(t1);
10         System.out.println("int轉換為String:"+t2);
11         //字符串轉換為基本數據類型
12         //通過paerInt方法
13         int t3=Integer.parseInt(t2);
14         //通過valeOf,先把字符串轉換為包裝類然後通過自動拆箱
15         int t4=Integer.valueOf(t2);
16         System.out.println("t3:"+t3);
17         System.out.println("t4:"+t4);
18 
19     }
20 
21 }
View Code

四.包裝類知識

  包裝類對象的初始值為null(是一個對象);

  包裝類對象之間的比較:

技術分享圖片
 1 package com.swpu;
 2 
 3 public class WrapperTestTre {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         Integer one=new Integer(100);
 8         Integer two=new Integer(100);
 9         //one和對two是兩個不同的對象,==在比較對象時比較的是內存地址,兩個是不同的空間,放的值相同
10         System.out.println("one==two:"+(one==two));
11         Integer three=100;//自動裝箱
12         /*    Integer three=Integer.valueOf(100);
13          * 這時緩存區沒有,就會構造一個
14          */
15         System.out.println("three==100:"+(three==100));//自動拆箱
16         Integer four=100;
17         /*實際執行的是    Integer four=Integer.valueOf(100); 這時緩存區有,就會直接取
18          * Java為了提高拆裝箱效率,在執行過程中提供了一個緩存區(對象池)【類似於常量數組】,
19          * 如果傳入的參數是,-128<參數<127會直接去緩存查找數據,如果有久直接產生,如果沒有就隱式調用new方法產生
20          */
21         
22         System.out.println("three==four:"+(three==four));
23         Integer five=200;
24         System.out.println("five==200:"+(five==200));
25         Integer six=200;
26         //註:這裏為200,超出了緩存區範圍,所以都需要構建
27         System.out.println("five==six:"+(five==six));
28         /*
29          * 輸出:
30          *     one==two:false
31             three==100:true
32             three==four:true
33             five==200:true
34             five==six:false
35 
36          */
37     }
38 
39 }
View Code

  註:

    Java中除了float和double的其他基本數據類型,都有常量池(註:Python中int【-5~256,257 這個整數對象是區分作用域的,它只有在相同的作用域, 內存地址才會相同

】,str,byte也有)

Java包裝類