天天看點

Java - 包裝類

Java - 包裝類
Java - 包裝類
  • Java中的包裝類都是用 final 修飾的,是無法被繼承的。
  • 除了 Boolean 和 Character 包裝類是 extends Object 之外,其餘的包裝類都是 extends Number。
  • 包裝類的預設值為null。
Java - 包裝類
public class WrapTestOne {

  public static void main(String[] args) {
    //裝箱:把基本資料類型轉換成包裝類
    //1、自動裝箱
    int t1=2;
    Integer t2=t1;
    
    //2、手動裝箱
    Integer t3=new Integer(t1);
    
    //測試
    System.out.println("int類型變量t1="+t1);
    System.out.println("Integer類型對象t2="+t2);
    System.out.println("Integer類型對象t3="+t3);
    System.out.println("*************************");
    
    //拆箱:把包裝類轉換成基本資料類型
    //1、自動拆箱
    int t4=t2;
    
    //2、手動拆箱
    int t5=t2.intValue();
    
    //測試
    System.out.println("Integer類型對象t2="+t2);
    System.out.println("自動拆箱後,int類型變量t4="+t4);
    System.out.println("手動拆箱後,int類型變量t5="+t5);
    double t6=t2;
    System.out.println("自動拆箱後,double類型變量t6="+t6);
    t6=t2.doubleValue();
    System.out.println("手動拆箱後,double類型變量t6="+t6);
  }
}

Console:
int類型變量t1=2
Integer類型對象t2=2
Integer類型對象t3=2
*************************
Integer類型對象t2=2
自動拆箱後,int類型變量t4=2
手動拆箱後,int類型變量t5=2
自動拆箱後,double類型變量t6=2.0
手動拆箱後,double類型變量t6=2.0      
Java - 包裝類
public class WrapTestTwo {

  public static void main(String[] args) {
    //基本資料類型轉換為字元串
    int t1=2;
    String t2=Integer.toString(t1);
    
    //測試
    System.out.println("int類型轉換為String類型對象t2="+t2);
    System.out.println("********************************");
    
    //字元串轉換為基本資料類型
    //1、包裝類的parse
    int t3=Integer.parseInt(t2);
    //2、包裝類的valueOf 先将字元串轉換為包裝類,再通過自動拆箱完成基本類型轉換
    int t4=Integer.valueOf(t2);
    
    //測試
    System.out.println("String類型轉換為int類型變量t3="+t3);
    System.out.println("String類型轉換為int類型變量t4="+t4);
  }
}

Console:
int類型轉換為String類型對象t2=2
********************************
String類型轉換為int類型變量t3=2
String類型轉換為int類型變量t4=2      
public class WrapperTest {

  public static void main(String[] args) {

    Integer one=new Integer(100);
    Integer two=new Integer(100);
    System.out.println("one==two的結果:"+(one==two));//1
    
    Integer three=100;//自動裝箱
    //等價于 Integer three=Integer.valueOf(100);
    System.out.println("three==100的結果:"+(three==100));//2 自動拆箱,相當于兩個int基本資料類型在做比較
    
    //Integer four=100;
    Integer four=Integer.valueOf(100);
    System.out.println("three==four的結果:"+(three==four));//3
    
    Integer five=200;
    System.out.println("five==200的結果:"+(five==200));//4
    
    Integer six=200;
    System.out.println("five==six的結果:"+(five==six));//5
    
    Double d1=Double.valueOf(100);
    System.out.println("d1==100的結果:"+(d1==100));
    
                // 除了 Float、Double 包裝類,其它的都可以應用對象常量池概念。
    Double d2=Double.valueOf(100);
    System.out.println("d1==d2的結果:"+(d1==d2));
  }
}

Console:
one==two的結果:false
three==100的結果:true
three==four的結果:true
five==200的結果:true
five==six的結果:false
d1==100的結果:true
d1==d2的結果:false      

注意:Integer.valueOf() 方法原理如圖(若不在該數值範圍内,走執行個體化路線-->new)(對于 Float、Double 包裝類不适用這規則,其他包裝類都可以應用對象常量池概念)

Java - 包裝類
Java - 包裝類

包裝類及常用方法簡介

Java - 包裝類
Java - 包裝類
Java - 包裝類
Java - 包裝類
Java - 包裝類
Java - 包裝類
Java - 包裝類
Java - 包裝類
Java - 包裝類

包裝類型與基本資料類型的異同