java包装器类型

一、为什么要使用包装器类型

  java是面向对象的语言,但基本类型并不是面向对象的,从而出现了包装器类型,并且包装器添加了更多的属性和方法。如我们在使用集合类型Collection的时候就一定要使用包装类型而非基本类型,它相当于将基本类型"包装起来",使它具有了对象的性质,丰富了基本类型的操作。

  java 的两大数据类型

  ● 基本类型(或者叫做内置类型)
  ● 引用数据类型

  基本类型:不存在"引用"的概念,基本类型都是直接存储在内存的内存栈上面,数据本身的值就存储在栈空间里面

  而Java语言里面只有这八种数据类型是这种存储模型;
  引用数据类型:“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的。

二、什么装箱和拆箱

  装箱:自动将基本数据类型转换为包装器类型。

  拆箱:自动将包装器类型转换为基本数据类型。

 三、装箱和拆箱是如何实现的?

  装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的 xxxValue方法实现的。(xxx代表对应的基本数据类型)。

  示例1:

  
Double i1 = 100.0;
Double i2 = 100.0;
Double i3 = 200.0;
Double i4 = 200.0;

System.out.println(i1==i2);
System.out.println(i3==i4);

  输出结果:

    false

    false

  为什么都返回false呢,我们看下Double.valueOf()方法,就知晓了:

private final double value;

public Double(double value) {
   this.value = value;
}

public static Double valueOf(double d) {
   return new Double(d);
}

示例2:

Boolean i1 = false;
Boolean i2 = false;
Boolean i3 = true;
Boolean i4 = true;

System.out.println(i1==i2);
System.out.println(i3==i4);

输出结果

    true

    true

为什么都返回true呢,我们看下Boolean.valueOf()方法,就知晓了:

public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);

public static Boolean valueOf(boolean b) {
   return (b ? TRUE : FALSE);
}

猜你喜欢

转载自www.cnblogs.com/zhangqingquan/p/10827377.html