天天看點

javaSE15-- 基本資料類型包裝類

基本資料類型包裝類

Java語言是一個面向對象的語言,但是Java中的基本資料類型卻是不面向對象的,這在實際使用時存在很多的不便,為了解決這個不足,在設計類時為每個基本資料類型設計了一個對應的類進行代表,這樣八個和基本資料類型對應的類統稱為包裝類.

為了程式設計友善

包裝類(如:Integer,Double等)這些類封裝了一個相應的基本資料類型數值,并為其提供了一系列操作。

在java中, 系統為每一個基本類型都提供 了 一個對應的包裝類型

基本資料類型 包裝類
byte Byte
short Short
int Integer
long Long
基本類型 包裝類
double Double
char Character
boolean Boolean

不能直接把基本類型資料指派給引用類型變量

目前程式沒有文法錯誤,是因為Java把這些基本類型資料自動轉換為了包裝類對象, 再把包裝 類對象傳遞給obj形參

public class Test01 {
  public static void main(String[] args) {
    m1(true);
    m1(456);
    m1(3.14);
    m1("abc");
    /*
     * 不能直接把基本類型資料指派給引用類型變量
     * 目前程式沒有文法錯誤,是因為Java把這些基本類型資料自動轉換為了包裝類對象, 再把包裝 類對象傳遞給obj形參
     */
  }
  // 需求: 定義方法, 可以處理任意類型的資料
  public static void m1(Object obj) {
  }
}      

裝箱拆箱

  • 裝箱:把基本類型轉換為包裝類對象
  • 拆箱:把包裝類對象轉換為基本類型
  • 在Java中, 可以自動的進行裝箱與拆箱
Integer i1 = 147;    //自動裝箱
int num = i1;      //自動拆箱      

Integer i2 = 666;

Integer i3 = 666; //重新建立了一個包裝類對象

Integer i2 = 666;    //根據基本類型資料666建立了一個包裝類對象, 把這個包裝類對象的引用指派給i2
Integer i3 = 666;    //重新建立了一個包裝類對象
System.out.println( i2.equals(i3));    //true
System.out.println( i2 == i3 );    //false      
Integer i4 = 77;
Integer i5 = 77;
System.out.println( i4 == i5 );    //true      

Java認為-128~127之間的整數使用最頻繁,是以這個範圍内整數建立的包裝類對象采用享元模式,即把包裝類對象存儲到共享池中

Long gg1 = 15L;
Long gg2 = 15L;
System.out.println( gg1 == gg2 );     //true      

包裝類對象的建立

  • 根據基本類型建立包裝類對象
  • 根據字元串建立包裝類對象// 字元串的格式要符合數字的格式
  • 布爾類型的包裝類把"true"字元串轉換為true, 其他的字元串都轉換為false
  • Character包裝類隻有一個構造方法…character1 = new Character(“A”);
Boolean  boolean1 = new Boolean(true);
short s = 123;
Short short1 = new Short(s);
Integer integer1 = new Integer(78945);
Double  double1 = new Double(3.14);
Character character1 = new Character('a');


boolean1 = new Boolean("true");
integer1 = new Integer("456");
double1 = new Double("45.789");

double1 = new Double("23e3");  //科學計數法
System.out.println(double1);    //23000.0      

輸出常用字段

System.out.println( Integer.BYTES);      //位元組數, 4
System.out.println( Integer.SIZE);        //位數:  32
System.out.println( Integer.TYPE);        //基本類型 : int
System.out.println( Integer.MIN_VALUE);
System.out.println( Integer.MAX_VALUE);      

包裝類的常用方法

**可以把字元串轉換為基本類型資料 ** 經常用

int num = Integer.parseInt("789");    
dd = Double.parseDouble("45.78");      

把基本類型/字元串轉換為包裝類對象

i1 = Integer.valueOf(369);
i2 = Integer.valueOf("258");      
Integer i1 = new Integer(123);
Integer i2 = new Integer("456");      

從Number繼承的 方法, 可以把包裝類對象轉換為基本類型資料

byte bb = i1.byteValue();
double dd = i2.doubleValue();      

包裝類實作了Comparable接口,重寫了compareTo()方法, 根據包裝類的value字段比較大小

每個包裝類都有一個value字段,儲存對應基本類型的資料

System.out.println( i1.compareTo(i2) );    //-1
Character c1 = new Character('A');
Character c2 = new Character('a');
System.out.println( c1.compareTo(c2));      //-32
Boolean b1 = new Boolean(true);
Boolean b2 = new Boolean(false);
System.out.println( b1.compareTo(b2));      //1      
System.out.println( i1.equals(i2));