轉載請保留原文鏈接: http://dashidan.com/article/java/basic/14.html
14.Java包裝類
Java語言是一個面向對象的語言,但Java中的基本數據類型卻是不面向對象的. 這在實際使用時存在很多的不便.
爲了解決這個不足(例如:集合類中只能存放對象, 不能存放基本類型數據), 在設計類時爲每個基本數據類型設計了一個對應的類進行代表, 這樣八個和基本數據類型對應的類統稱爲包裝類(Wrapper Class), 也翻譯爲外覆類或數據類型類.
① 包裝類對應表
基本數據類型 | 包裝類 |
byte | Byte |
boolean | Boolean |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
在這八個類名中,除了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
④ 相關文章