Java包装类

发布时间 2023-12-13 14:41:09作者: PaiAL

包装类

什么是包装类

  • 基本数据类型所对应的引用数据类型

  • Object可同一所有数据,包装类的默认值是null

基本数据类型包装类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char character

类型转换与装箱拆箱

  • 8种包装类提供不同类型间的转换方式:

    • Number父类中提供的6个共性方法

    • valueOf:装箱

    • intValue:拆箱

package com.lin.box.demo01;

public class Test {

   public static void main(String[] args) {
       int num1 = 10;
       //装箱:把基本数据类型转换为对应的包装类类型
       //使用Integer的静态方法valueOf
       Integer integer1 = Integer.valueOf(num1);
       Integer integer2 = new Integer(num1);
       System.out.println("装箱");
       System.out.println(integer1);
       System.out.println(integer2);


       //拆箱:把包装类类型转换为对应的基本数据类型
       Integer integer3 = new Integer(10);
       int num2 = integer3.intValue();
       System.out.println("拆箱");
       System.out.println(num2);

       //JDK1.5之后,;自动装箱,自动拆箱
       int age = 30;
       //自动装箱
       Integer integer4 = age;
       System.out.println("自动装箱");
       System.out.println(integer4);
       //自动拆箱
       int age2 = integer4;
       System.out.println("自动拆箱");
       System.out.println(age2);
  }

}
  • parsexxx提供基本类型和字符串之间的转换

    package com.lin.box.demo02;

    public class Test {

       public static void main(String[] args) {
           //1.基本类型转化为字符串
           int num1 = 255;
           //1.1使用‘+’号
           String s1 = num1 + "";
           //1.2使用Integer中的toString方法
           String s2 = Integer.toString(num1);
           String s3 = Integer.toString(num1,16);
           System.out.println(s1);
           System.out.println(s2);
           System.out.println(s3);

           //2.字符串转化为基本类型
           System.out.println("-------------");
           String s4 = "123";
           //2.1使用包装类中的parseXXX静态方法
           int num2 = Integer.parseInt(s4);
           System.out.println(num2);

           //boolean字符串形式转成基本类型,“true” ---> true, 非“true” ---> false
           String str = "true";
           boolean b = Boolean.parseBoolean(str);
           System.out.println(b);

           String str2 = "true1";
           boolean b2 = Boolean.parseBoolean(str2);
           System.out.println(b2);
      }

    }

注意:需要保证类型兼容,否则会抛出NumberFormatException异常。

整数缓冲区

  • Java预先创建了256个常用的整数包装类型对象

  • 在实际引用中,对已创建的对象进行服用

package com.lin.box.demo03;

public class Test {

   public static void main(String[] args) {
       Integer integer1 = new Integer(1);
       Integer integer2 = new Integer(1);
       System.out.println(integer1 == integer2);//false
       //引用类型的数据存储在堆内存中,比较的是地址值,所以结果为false

       Integer integer3 = 100;//自动装箱
       Integer integer4 = 100;
       System.out.println(integer3 == integer4);//true
       //Integer缓冲区中默认保存了-128~127的数据,如果是在这个范围内,会直接从缓冲区中取出数据,地址相同,所以结果为true

       Integer integer5 = 200;//自动装箱
       Integer integer6 = 200;
       System.out.println(integer5 == integer6);//false
       //超出这个范围,会重新new一个对象,地址不同,所以结果为false
  }

}