包装类

2020-10-31  本文已影响0人  曾梦想仗剑天涯

包装类实现原理分析

    包装类的主要功能是针对于基本数据类型的对象转换而实现的,并且随着JDK的更新,包装类的功能也在发生着改变,有着更多的支持

认识包装类

//以int数据为例,实现一个包装处理定义
class Int { 
  private int data;
  public Int(int data) {
    this.data = data;
  }
  public int intValue() {
    return this.data;
  }
}
 public class JavaDemo {
  public static void main(String [] args) {
    Object obj = new Int(10);   //装箱:将基本数据类型保存在包装类之中
    int x = ((Int)obj).intValue();    //拆箱:从包装对象中获取基本数据类型
    System.out.println(x*2);
  }
}
No. 方法名称 类型 描述
01 public byte byteValue() 普通 从包装类之中获取byte数据
02 public short shortValue() 普通 从包装类之中获取short数据
03 public abstract int intValue() 普通 从包装类之中获取int数据
04 public abstract long longValue() 普通 从包装类之中获取long数据
05 public abstract float floatValue() 普通 从包装类之中获取float数据
06 public abstract double doubleValue() 普通 从包装类之中获取double数据

装箱与拆箱操作

    基本数据类型的包装类都是为了基本数据类型转为对象提供的,这样对于基本类型与包装类之间就有了如下的操作关系:

//以int和Integer为例
public class JavaDemo {
  public static void main(String [] args) {
    Integer obj = new Integer(10);    //装箱
    int x = obj.intValue();   //拆箱
    System.out.println(x);
  }
}
//以double与Double为例
public class JavaDemo {
  public static void main(String [] args) {
    Double obj = new Double(10.0);    //装箱
    double x = obj.doubleValue();   //拆箱
    System.out.println(x);
  }
}
//以boolean与Boolean为例
public class JavaDemo {
  public static void main(String [] args) {
    Boolean obj = new Boolean(true);    //装箱
    boolean x = obj.booleanValue();   //拆箱
    System.out.println(x);
  }
}
//观察自动的装箱与拆箱
public class JavaDemo {
  public static void main(String [] args) {
    Integer obj = 10;   //自动装箱
    int x = obj;    //自动拆箱
    obj++;    //包装类对象可以直接参与数学运算
    System.out.println(x * obj);    //直接数学运算
  }
}
//Object接收小数
public class JavaDemo {
  public static void main(String [] args) {
    Object obj = 19.2;    //double 自动装箱为 Double, 向上转型为Object
    //obj++; //Object类不可进行数学运算了
    double num = (Double) obj;    //向下转型为包装类,再自动拆箱
    System.out.println(num);
  }
}
//观察相等的判断处理
public class JavaDemo {
  public static void main(String [] args) {
    Integer x = 99;    // 127  128  -128  -129
    Integer y = 99;    // 127  128  -128  -129
    System.out.println(x == y);   //true false true false
    System.out.println(x.equals(y));   //true true true true
  }
}
上一篇 下一篇

猜你喜欢

热点阅读