Java基础补充 包装类

  • 什么包装类?
    Java中万物皆对象,很多的特性都是针对于对象的,而基本数据类型就显得格格不入,无法参与转型、泛型、反射等操作,所以我们需要一个类将基本类型包装起来
  • 什么是自动拆箱和装箱?
    Integer i = new Integer(1); //Java 5 之前需要显式构造包装类对象
    Integer j = 1;//自动调用Integer.valueOf(1)将数值转换为包装类对象--自动装箱
    int k = j;    //自动调用j.intValue()将j转换为数值--自动拆箱
  • 什么时候会自动拆箱和装箱?—在需要的时候
    这句话一点都不水,学习任何知识点都需要去思考,去理解,死记硬背不可取

    Integer i = 300; //赋值右侧应为对象--装箱
    i.equals(2);//参数应为对象--装箱
    
    int j = i; //赋值右侧应为数值--拆箱
    if (i == 300) System.out.println("拆箱"); //通过Integer特性可以判断为进行拆箱
    
    i =  i + 1; //进行加法运算时应为数值-拆箱  作为赋值右侧应为对象-装箱   先拆后装
  • 注意
    • 包装类中对应的数值都是private final,也就是说包装类的数值更改是需要重新构造对象的
    • 自动装箱的内存复用(valueOf 的机制)
      • 对Integer,自动装箱(调用valueOf(int))时若数值在[-128,127]之内时不会构造新对象,会复用已有对象,类似于String;Byte,Short,Long,Character机制类似
      • 对Float,Double,Boolean来说没有这种机制,自动装箱就是创建新对象

西瓜要挖着吃

一个通往大佬之路的男人

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注