14.Java包裝類

轉載請保留原文鏈接: http://dashidan.com/article/java/basic/14.html

14.Java包裝類

Java語言是一個面向對象的語言,但Java中的基本數據類型卻是不面向對象的. 這在實際使用時存在很多的不便.

爲了解決這個不足(例如:集合類中只能存放對象, 不能存放基本類型數據), 在設計類時爲每個基本數據類型設計了一個對應的類進行代表, 這樣八個和基本數據類型對應的類統稱爲包裝類(Wrapper Class), 也翻譯爲外覆類或數據類型類.

① 包裝類對應表

包裝類對應表
基本數據類型包裝類
byteByte
booleanBoolean
booleanBoolean
shortShort
charCharacter
intInteger
longLong
floatFloat
doubleDouble

在這八個類名中,除了Integer和Character類, 其它六個類的類名和基本數據類型相比, 只是類名的第一個字母大寫.

② 包裝類的使用

對於包裝類說,這些類的用途主要包含兩種:

  • 作爲和基本數據類型對應的類類型存在,方便涉及到對象的操作.

  • 包含每種基本數據類型的相關屬性如最大值、最小值等,以及相關的操作方法.

由於八個包裝類的使用比較類似,以最常用的`Integer`類爲例, 介紹包裝類的應用.

1.實現int和Integer類之間的轉換

使用Integer類的構造方法和intValue()方法實現這些基本類型和包裝類之間的相互轉換.

代碼示例:

/** 將int類型轉換爲Integer類型*/int intNum = 10;Integer integer = new Integer(intNum);/** 將Integer類型轉換爲int類型*/int intValue = integer.intValue();

2.Integer類常用方法

  • parseInt方法 該方法的作用是將字符串轉換爲對應的數值.
    代碼示例:

String s = "123";int n = Integer.parseInt(s);//將字符串"120"按照十進制轉換爲int,則結果爲120int n = Integer.parseInt("120",10);//將字符串"12"按照十六進制轉換爲int,則結果爲18int n = Integer.parseInt("12",16);//將字符串"ff"按照十六進制轉換爲int,則結果爲255int n = Integer.parseInt("ff",16);

如果字符串都包含的不是都是數字字符,則程序執行將出現異常報錯.

  • toString方法 該方法的作用是將int類型轉換爲對應的String類型.

代碼示例:

int m = 1000;String s = Integer.toString(m);//將int值轉換爲特定進制的字符串:
  • 整數轉化爲字符串 有2種方式:Integer.toString()方法和整數 + ""方式, 應該用那種呢? 先放結論: 用整數 + ""方式實現.


附帶真像的代碼:

package com.dashidan.lesson13;/**
 * 大屎蛋教程網-dashidan.com
 * <p>
 * Java教程基礎篇: 13. Java包裝類
 * 整數轉化爲字符串
 */public class Demo2 {
    public static void main(String[] args) {
        int count = 100000;
        long t1 = System.currentTimeMillis();
        System.out.println("");
        for (int i = 0; i < count; i++) {
            Integer in = new Integer(100);
            String s1 = in.toString();
        }
        long t2 = System.currentTimeMillis();
        System.out.println(" t2 - t1 " + (t2 - t1));
        for (int i = 0; i < count; i++) {
            String s2 = 100 + "";
        }
        long t3 = System.currentTimeMillis();

        System.out.println(" t3 - t2 " + (t3 - t2));
    }}

輸出:

t2 - t1 12
t3 - t2 1

`整數 + ""`方式比Integer.toString()的方式快了10倍左右.

③ 自動裝包/拆包

JDK自1.5(5.0)版本引入了自動拆裝箱(Autoboxing/unboxing)的語法, 也就是在進行基本數據類型和對應的包裝類轉換時, 系統將自動進行,大大方便了代碼的書寫.

/** int類型會自動轉換爲Integer類型*/int n = 12;/** Integer類型會自動轉換爲int類型*/Integer m = n;

代碼示例:

package com.dashidan.lesson13;/**
 * 大屎蛋教程網-dashidan.com
 * <p>
 * Java教程基礎篇: 13. Java包裝類
 */public class Demo1 {
    public static void main(String[] args) {
        /** 將int類型轉換爲Integer類型*/
        int intNum = 10;
        Integer integer = new Integer(intNum);
        /** 將Integer類型轉換爲int類型*/
        int intValue = integer.intValue();
        System.out.println(" intNum " + intNum + " intValue " + intValue);

        /** 將字符串"666"按照十進制轉換爲int,則結果爲666*/
        int n0 = Integer.parseInt("666");
        int n1 = Integer.parseInt("666", 10);
        /** 將字符串"12"按照十六進制轉換爲int,則結果爲18*/
        int n2 = Integer.parseInt("12", 16);
        /** 將字符串"FF"按照十六進制轉換爲int,則結果爲255*/
        int n3 = Integer.parseInt("FF", 16);
        System.out.println("n0 : " + n0 + " n1: " + n1 + " n2: " + n2 + " n3: " + n3);


        /** int類型會自動轉換爲Integer類型*/
        int n = 12;
        /** Integer類型會自動轉換爲int類型*/
        Integer m = n;
        if (m == n) {
            System.out.println(m == n);
        }
    }}

輸出:

 intNum 10 intValue 10
n0 : 666 n1: 666 n2: 18 n3: 255
true

④ 相關文章

 Java從入門到精通目錄


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章