![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yM5QzN0MTNyIzN2U2Y2QDOyYzX4UTO0ETM4EzLcVDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
- Java中的包裝類都是用 final 修飾的,是無法被繼承的。
- 除了 Boolean 和 Character 包裝類是 extends Object 之外,其餘的包裝類都是 extends Number。
- 包裝類的預設值為null。
public class WrapTestOne {
public static void main(String[] args) {
//裝箱:把基本資料類型轉換成包裝類
//1、自動裝箱
int t1=2;
Integer t2=t1;
//2、手動裝箱
Integer t3=new Integer(t1);
//測試
System.out.println("int類型變量t1="+t1);
System.out.println("Integer類型對象t2="+t2);
System.out.println("Integer類型對象t3="+t3);
System.out.println("*************************");
//拆箱:把包裝類轉換成基本資料類型
//1、自動拆箱
int t4=t2;
//2、手動拆箱
int t5=t2.intValue();
//測試
System.out.println("Integer類型對象t2="+t2);
System.out.println("自動拆箱後,int類型變量t4="+t4);
System.out.println("手動拆箱後,int類型變量t5="+t5);
double t6=t2;
System.out.println("自動拆箱後,double類型變量t6="+t6);
t6=t2.doubleValue();
System.out.println("手動拆箱後,double類型變量t6="+t6);
}
}
Console:
int類型變量t1=2
Integer類型對象t2=2
Integer類型對象t3=2
*************************
Integer類型對象t2=2
自動拆箱後,int類型變量t4=2
手動拆箱後,int類型變量t5=2
自動拆箱後,double類型變量t6=2.0
手動拆箱後,double類型變量t6=2.0
public class WrapTestTwo {
public static void main(String[] args) {
//基本資料類型轉換為字元串
int t1=2;
String t2=Integer.toString(t1);
//測試
System.out.println("int類型轉換為String類型對象t2="+t2);
System.out.println("********************************");
//字元串轉換為基本資料類型
//1、包裝類的parse
int t3=Integer.parseInt(t2);
//2、包裝類的valueOf 先将字元串轉換為包裝類,再通過自動拆箱完成基本類型轉換
int t4=Integer.valueOf(t2);
//測試
System.out.println("String類型轉換為int類型變量t3="+t3);
System.out.println("String類型轉換為int類型變量t4="+t4);
}
}
Console:
int類型轉換為String類型對象t2=2
********************************
String類型轉換為int類型變量t3=2
String類型轉換為int類型變量t4=2
public class WrapperTest {
public static void main(String[] args) {
Integer one=new Integer(100);
Integer two=new Integer(100);
System.out.println("one==two的結果:"+(one==two));//1
Integer three=100;//自動裝箱
//等價于 Integer three=Integer.valueOf(100);
System.out.println("three==100的結果:"+(three==100));//2 自動拆箱,相當于兩個int基本資料類型在做比較
//Integer four=100;
Integer four=Integer.valueOf(100);
System.out.println("three==four的結果:"+(three==four));//3
Integer five=200;
System.out.println("five==200的結果:"+(five==200));//4
Integer six=200;
System.out.println("five==six的結果:"+(five==six));//5
Double d1=Double.valueOf(100);
System.out.println("d1==100的結果:"+(d1==100));
// 除了 Float、Double 包裝類,其它的都可以應用對象常量池概念。
Double d2=Double.valueOf(100);
System.out.println("d1==d2的結果:"+(d1==d2));
}
}
Console:
one==two的結果:false
three==100的結果:true
three==four的結果:true
five==200的結果:true
five==six的結果:false
d1==100的結果:true
d1==d2的結果:false
注意:Integer.valueOf() 方法原理如圖(若不在該數值範圍内,走執行個體化路線-->new)(對于 Float、Double 包裝類不适用這規則,其他包裝類都可以應用對象常量池概念)