首页 > 编程语言 >JavaSE5️⃣核心类 - 包装类型

JavaSE5️⃣核心类 - 包装类型

时间:2023-02-14 22:56:38浏览次数:46  
标签:缓存 JavaSE5 包装 核心 int static 类型 Integer public

1、包装类型

Java 数据类型

  1. 基本类型
    1. byte,short,int,long
    2. float,double
    3. char,boolean
  2. 引用类型:八种基本类型之外的所有数据类型。
    1. 包含所有 class 和 interface 类型。
    2. 可以赋值为 null,表示空(不存在)。

1.1、包装类

包装类(Wrapper Class)

  1. 目的使基本类型拥有对象(引用类型)的性质,Java 提供了包装类。

  2. 类库java.lang。定义了基本类型对应的包装类。

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

1.1.1、不可变类

String 相同,

包装类的声明、变量值均由 final 修饰。

对象实例化后,无法改变。

以 Integer 为例

public final class Integer {
    private final int value;
}

1.1.2、比较变量值

  1. 基本类型:使用 == 直接比较。

  2. 包装类型:属于引用类型,

    1. ==:比较地址。

    2. equals():先判断 obj 是否为当前包装类型,再比较数值。

      // 示例:Integer 的 equals()
      public boolean equals(Object obj) {
          if (obj instanceof Integer) {
              return value == ((Integer)obj).intValue();
          }
          return false;
      }
      

1.1.3、获取变量值

数值类型的包装类(整数、浮点数)继承自 Number

便于直接通过包装类型获取基本类型。

// 向上转型为Number
Number num = new Integer(999);

// 获取byte, int, long, float, double
byte b = num.byteValue();
int n = num.intValue();
long ln = num.longValue();
float f = num.floatValue();
double d = num.doubleValue();

1.2、拆装箱

1.2.1、含义

  1. 装箱:基本类型 → 包装类型,使用静态方法 包装类.valueOf(参数)

  2. 拆箱:包装类型 → 基本类型。使用实例方法 包装类实例.xxxValue()

    int n = 100;
    
    Integer num = Integer.valueOf(int);	// 装箱
    int num1 = num.intValue();	// 拆箱
    

1.2.2、自动拆装箱

Java 1.5 语法糖

编译期优化,用于简化代码。

本质:编译器自动调用 valueOf(基本类型)xxxValue() 方法。

  1. 自动装箱(Auto Boxing):

    int num = 7;
    
    Integer num1 = Integer.valueOf(num);
    Integer num2 = num;	// 自动装箱
    
  2. 自动拆箱(Auto Unboxing):

    Integer num = 100;
    
    int num1 = num.intValue();
    int num2 = num;	// 自动拆箱
    

特点

  1. 影响代码执行效率
    • 基本类型和包装类型可以直接赋值,使用者无需考虑其区别。
    • 在底层,字节码文件严格区分基本类型和引用类型。
    • 相比对应类型的直接赋值,频繁的拆装箱操作会消耗性能。
  2. 自动拆箱可能报错 NPE。因为待拆箱变量可能为 null。

1.3、无符号整型处理

涉及知识

标签:缓存,JavaSE5,包装,核心,int,static,类型,Integer,public
From: https://www.cnblogs.com/secretmrj/p/17121143.html

相关文章