轉載請保留原文鏈接: http://dashidan.com/article/java/basic/14.html
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,則結果爲120
int n = Integer.parseInt("120",10);
//將字符串"12"按照十六進制轉換爲int,則結果爲18
int n = Integer.parseInt("12",16);
//將字符串"ff"按照十六進制轉換爲int,則結果爲255
int 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