包裝類概述
什麼是包裝類
- 基本資料類型所對應的引用類型
- Object可統一所有資料,包裝類的預設值是null
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL5MDM4AzNxcDOx0yM5QjN1ITN5EDOwATMxIDMy0SN2gTM4IjMvwFMxEjMwIzLcVjN4EDOyIzLcd2bsJ2Lc12bj5ycn9Gbi52YuAjMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
裝箱和拆箱
- 基本類型轉換為引用類型為裝箱
- 引用類型轉換為基本類型為拆箱
package commonclass.packingclass;
public class Demo01 {
public static void main(String[] args) {
//類型轉換:裝箱,基本類型轉成引用類型的過程
int age = 18;
//int使用Integer類建立對象
//方式一:
Integer integer = new Integer(age);
//方式二:
Integer integer1 = Integer.valueOf(age);
//類型轉換:拆箱,引用類型轉換成基本類型
Integer integer2 = new Integer(100);
int age1 = integer2.intValue();
//👆jdk1.5之前,了解
//👇jdk1.5之後,提供自動拆箱裝箱
int num = 30;
//自動裝箱,把基本類型賦給引用類型
Integer integer3 = num;
//自動拆箱,把引用類型賦給基本類型
int num1 = integer3;
}
}
基本類型和字元串轉換
8種包裝類提供不同的類型間轉換方式:
- Number父類中提供的6個共性方法
- parseXXX()靜态方法
- valueOf()靜态方法,把基本類型轉換為引用類型
package commonclass.packingclass;
public class Demo01 {
public static void main(String[] args) {
//基本類型和字元串之間轉換
//1 基本類型轉成字元串
int n1 = 100;
//1.1 使用+号
String s1 = n1 + "aa";
System.out.println(s1);
//1.2 之後使用Integer中的toString()方法
String s2 = Integer.toString(n1);
System.out.println(s2);
//2 字元串轉換為基本類型
String str = "150";
int n2 = Integer.parseInt(str);
System.out.println(str);
//3 補充:boolean字元串形式轉換成基本類型。“true”---->true 非“true”---->false
String str2 = "true";
boolean b1 = Boolean.parseBoolean(str2);
System.out.println(b1);
String str3 = "qwert";
boolean b2 = Boolean.parseBoolean(str3);
System.out.println(b2);
}
}
整數/Integer緩沖區
- Java預先建立了256個常用的整數包裝類型對象
package commonclass.packingclass;
public class Demo02 {
public static void main(String[] args) {
//面試題
Integer integer = new Integer(100);
Integer integer1 = new Integer(100);
System.out.println(integer==integer1);
//false :比較的是棧中的位址;調用的是構造方法
Integer integer2 = 100;//自動裝箱
Integer integer3 = 100;
System.out.println(integer2==integer3);
//true :将基本類型賦給引用類型,自動裝箱;棧中的integer通路的都是堆中的100;調用的是valueOf()方法存放在堆中的緩沖區
/*👇過程
Integer integer2 = 100----->Integer integer2 = Integer.valueOf(100)
Integer integer3 = 100----->Integer integer3 = Integer.valueOf(100)
*/
Integer integer4 = 200;//自動裝箱
Integer integer5 = 200;
System.out.println(integer4==integer5);
//false :valueOf的範圍是-128到127,不在範圍之内的會重新new一個,是以比較的是棧中的位址
}
}