包裝類

一.包裝類:

1.包裝類:java

Java語言是一個面向對象的語言,可是Java中的基本數據類型倒是不面向對象的。基本類型的數據不具有"對象"的特性(沒有成員變量和成員方法能夠調用),所以,java爲每種數據類型分別設計了對應的類,即包裝類。git

基本數據類型 對應的包裝類
byte Byte
short Short
int Integer
long Long
char Character
floar Floar
double Double
boolean Boolean

(1)全部包裝類都是final類型,所以不能建立他們的子類。
(2)包裝類是不可變類,一個包裝類的對象自建立後,他所包含的基本類型數據就不能被改變。面試

2.包裝類的特色:
包裝類ide

二.Integer類

1.裝箱和拆箱源碼分析

裝箱:將基本數據類型變爲包裝類對象。
拆箱:將包裝類中包裝的基本數據類型取出。設計

int到Integer Integer到int
使用Integer類的構造方法 調用Integer類的intValue()方法
使用Integer類內部的valueOf( )方法 自動拆箱(JDK1.5)
自動裝箱(JDK1.5)

2.int到nteger類:code

三種方法:
(1)使用Integer類的構造方法
(2)使用Integer類內部的valueOf( )方法
(3)自動裝箱orm

(1)方法1:使用Integer類的構造方法對象

  • public Integer(int value):將int類型轉換爲Integer類。
  • public Integer(String s):將String類型轉換爲Integer類。
    注意:使用此構造方法時,字符串內的字符必須由數字組成,不能夠是字母或者其餘形式,不然拋出NumberFormatException。
public static void main(String[] args)
  {
    //方式1:public Integer(int value)
    int i= 100;
    //將int類型的i轉換爲Integer類型的ii
    Integer ii = new Integer(i);
    System.out.println("ii:"+ii);

    //方式2:public Integer(String s)
    String s = "100";
    //String s = "abc";出錯,由於這個字符串必須由數字字符組成。 
    Integer iii = new Integer(s);
    System.out.println("iii:"+iii);//100    
  }

(2)方法2:使用Integer類內部的valueOf方法blog

public static Integer valueOf(int i):將int類型轉換爲Integer類。

Integer i3 = Integer.valueOf(30);

(3)方法3:自動裝箱的方法:
事實上,編譯器自動執行了valueOf方法。

Integer ii = 100;//編譯器自動執行了Integer ii = Integer.valueOf(100)
包裝類 裝箱 拆箱
Byte valueOf() byteValue()
Short valueOf() shortValue()
Integer valueOf() intValue()
Long valueOf() longValue()
Float valueOf() floatValue()
Double valueOf() doubleValue()
Character valueOf() charValue()
Boolean valueOf() booleanValue()

valueOf源碼分析:

public static Integer valueOf(int i) {
     assert IntegerCache.high>= 127;
     if (i >= IntegerCache.low&& i <= IntegerCache.high)
     return IntegerCache.cache[i+ (-IntegerCache.low)];
     return new Integer(i); 
}

經過查看原碼可知,java針對-128-127之間的數據作了一個數據緩衝池。
若是數據是該範圍內的,每次並不建立新的空間。
若是數據是該範圍內的,就new一個空間

相關面試題:

public static void main(String[] args)
    {
        Integer i1 = new Integer(127);
        Integer i2 = new Integer(127);
        System.out.println(i1 == i2);//false
        System.out.println(i1.equals(i2));//true重寫了equals方法,比較的內容

        Integer i3 = new Integer(128);
        Integer i4 = new Integer(128);
        System.out.println(i3 == i4);//false
        System.out.println(i3.equals(i4));//true

        Integer i5 = 128;
        Integer i6 = 128;
        System.out.println(i5 == i6);//false
        System.out.println(i5.equals(i6));//true

        Integer i7 = 127;
        Integer i8 = 127;
        System.out.println(i7 == i8);//true
        System.out.println(i7.equals(i8));//true

3.Integer類到 int:

(1)調用包裝類的intValue()方法
(2)經過自動拆箱:

  • 方法1:調用包裝類的intValue()方法
    public int intValue():以 int 類型返回該 Integer 的值。
public void test2() {
    Integer i1 = new Integer(14);
    Float f1 = new Float(12.3F);
    //1.調用包裝類的XxxValue()方法
    int i2 = i1.intValue();//i2 = 14
    float f2 = f1.floatValue();//f2 = 12.3
    }
  • 方法2:經過自動拆箱:
    編譯器自動執行了valueOf方法
//5是基本數據類型,經過自動裝箱變成對象類型。
        //編譯器執行了Integer iii = Integer.valueOf(5)
        Integer iii=5;
        //自動拆箱,實際上執行了 int iii2 = iii.intValue()
        int iii2=iii;
        System.out.println(iii2);

4.int類型數據和String形式之間的相互轉換:

int到String String到int
字符串的拼接 String–>Integer–>int
String類的valueOf()方法 int parseInt(String s)
toString(int i)
public static void main(String[] args)
    {
        //int--String把int類型的數據轉化爲字符串的形式
        int number = 100;

        //方式1:字符串的拼接
        String s1 = "" + number;
        System.out.println("s1:"+s1);

        //方式2:String類的valueOf能夠把任意類型的數據轉換成String類型
        String s2 = String.valueOf(number);
        System.out.println("s2:"+s2);

        //方式3
        //int -- Integer -- String
        Integer i = new Integer(number);
        String s3 = i.toString();
        System.out.println("s3:"+s3);

        //方式4
        //public static String toString(int i)返回一個表示該 Integer 值的 String 對象。
        String s4 = Integer.toString(number);
        System.out.println("s4:"+s4);

        //String--int
        String s ="100";
        //方式1
        //String--Integer--int
        //String--Integer
        Integer ii = new Integer(s);
        //Integer--int
        //public int intValue()以 int類型返回該 Integer的值
         int x = ii.intValue();
        System.out.println("x:"+x);

        //方式2
        //public static int parseInt(String s)
        int y = ii.parseInt(s);
        System.out.println("y:"+y);
    }

5.進制的轉換:

進制間轉換 方法 說明
十進制到二進制 toBinaryString(int i) 將一個十進制整數轉換成字符串形式的二進制數
十進制到八進制 toOctalString(int i) 將一個十進制整數轉換成字符串形式的八進制數
十進制到十六進制 toHexString(int i) 將一個十進制整數轉換成字符串形式的十六進制數
十進制到其餘進制 toString(int i,int radix) 將一個十進制數轉換字符串形式的radix進制數,radix爲進制值
其餘進制到十進制 int parseInt(String s, int radix) 將一個radix進制的數轉換爲十進制
public static void main(String[] args)
    {
        //十進制到二進制,八進制,十六進制
        System.out.println(Integer.toBinaryString(100));
        System.out.println(Integer.toOctalString(100));
        System.out.println(Integer.toHexString(100));
        System.out.println("--------");

        //十進制到其餘進制
        System.out.println(Integer.toString(100,10));
        System.out.println(Integer.toString(100,2));
        System.out.println(Integer.toString(100,8));
        System.out.println(Integer.toString(100,15));
        System.out.println(Integer.toString(100,5));
        System.out.println(Integer.toString(100,7));
        System.out.println(Integer.toString(100,-7));
        System.out.println(Integer.toString(100,70));
        System.out.println(Integer.toString(100,34));
        System.out.println(Integer.toString(100,37));
        System.out.println(Integer.toString(100,36));

        //其餘進制轉換爲十進制
        System.out.println(Integer.parseInt("100",10));
        System.out.println(Integer.parseInt("100",2));
        System.out.println(Integer.parseInt("100",4));
        System.out.println(Integer.parseInt("100",16));
        System.out.println(Integer.parseInt("100",23));
        //System.out.println(Integer.parseInt("123",2));出錯,由於2進制沒有3
    }

三.Character類

1.Character類概述:
Character類在對象中包裝了一個char的值,用於對單個字符進行操做。
該類提供了幾種方法來操縱字符,以肯定字符的類別(小寫字母,數字,等等),並將字符從大寫轉換成小寫等。

2.Character類的構造方法:

  • public Character(char value):將char類型轉換爲Character類。
Character ch1 = new Character('a');
System.out.println("ch1:"+ch1);  //ch1:97

注意:char和Character類之間的轉換方法與int和Integer類之間的轉換方法相同

3.Character類的方法:

序號 方法 說明
1 isDigit() 是不是一個數字字符
2 isWhiteSpace() 是不是一個空格
3 isUpperCase() 是不是大寫字母
4 isLowerCase() 是不是小寫字母
5 toUpperCase() 指定字母的大寫形式
6 toLowerCase() 指定字母的小寫形式
7 toString() 返回字符的字符串形式
public static void main(String[] args)
    {
        //public static boolean isUpperCase(int codePoint)判斷給定的字符是否爲大寫字符
        System.out.println(Character.isUpperCase('A'));
        System.out.println(Character.isUpperCase('a'));
        System.out.println(Character.isUpperCase('0'));

        //public static boolean isLowerCase(char ch):判斷給定的字符是不是小寫字符
        System.out.println(Character.isUpperCase('A'));
        System.out.println(Character.isUpperCase('a'));
        System.out.println(Character.isUpperCase('0'));

        // public static boolean isDigit(int codePoint):判斷給定的字符是不是數字
        System.out.println(Character.isUpperCase('A'));
        System.out.println(Character.isUpperCase('a'));
        System.out.println(Character.isUpperCase('0'));

        //public static char toUpperCase(char ch):把給定的字符轉換爲大寫字符
        System.out.println(Character.toUpperCase('a'));

        //public static char toLowerCase(char ch):把給定的字符轉換爲小寫字符
        System.out.println(Character.toLowerCase('A'));
    }
相關文章
相關標籤/搜索