java装箱,java装箱拆箱啥意思

发布时间:2023-01-06

本文目录一览:

  1. java包装类怎样理解?装箱与拆箱又怎样理解?请通俗的解释一下,举个例子也行
  2. java 包装类 自动装箱问题
  3. java 为什么要有装箱和拆箱?

java包装类怎样理解?装箱与拆箱又怎样理解?请通俗的解释一下,举个例子也行

Java有一个类型系统有两个部分组成,包含基本类型(bytecharintshortlongfloatdoubleboolean)和引用类型。而基本类型则对应着各自的引用类型,称为装箱的基本类型。而引用类型对应着各自的基本类型,称为拆箱的基本类型。对应的类型为:(ByteCharacterIntegerShortLongFloatDoubleBoolean) 下面用具体例子来说明装箱与拆箱:

// Java 1.5之前创建一个Integer对象
Integer i = new Integer(10);
// Java 1.5之后有了装箱的特性,直接用下列方式生成一个Integer对象
// 在这个过程中会将int类型的10自动装箱成为Integer类型
Integer i = 10;
// 拆箱,输出的值为20,这个过程中,会先将Integer类型的j自动拆箱为基本类型的10,最后完成运算
Integer j = new Integer(10);
int k = 10;
System.out.print(j + k);

java 包装类 自动装箱问题

Java包装类,Wrapper。由于在Java中,数据类型总共可分为两大种,基本数据类型(值类型)和类类型(引用数据类型)。基本类型的数据不是对象,所以对于要将数据类型作为对象来使用的情况,Java提供了相对应的包装类。对于8种数据类型的包装类分别是:

  • intInteger
  • charCharacter
  • floatFloat
  • doubleDouble
  • byteByte
  • shortShort
  • longLong
  • booleanBoolean 所谓装箱,就是把基本类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int型包装成Integer类的对象,或者把double包装成Double等。 所谓拆箱,就是跟装箱的方向相反,将IntegerDouble这样的引用类型的对象重新简化为值类型的数据。 J2SE 5.0后提供了自动装箱与拆箱的功能,此功能事实上是编译器来帮您的忙,编译器在编译时期依您所编写的方法,决定是否进行装箱或拆箱动作。 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。 自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()doubleValue()方法。 自动装箱,只需将该值赋给一个类型包装器引用,Java会自动创建一个对象。例如:
Integer i = 100; // 没有通过使用new来显示建立,Java自动完成。

自动拆箱,只需将该对象值赋给一个基本类型即可。例如:

int j = i;

手动装箱和拆箱示例:

int i = 10;
Integer j = new Integer(i); // 手动装箱操作
int k = j.intValue(); // 手动拆箱操作

自动装箱和拆箱示例:

int i = 11;
Integer j = i; // 自动装箱
int k = j; // 自动拆箱

java 为什么要有装箱和拆箱?

把一个基本类型包装成一个类,一个是可以使这个类型具有很多可以调用的方法。二是Java向面向对象语言的靠近。其实Java还不算是很纯的面向对象的语言。真正的面向对象,是没有基本数据类型的。它只有一种类型,就是对象。三是泛型中,基本类型是不可以做泛型参数的。例如:List<int> list = new ArrayList<int>(); 这是不合法的。你只能这样写:List<Integer> list = new ArrayList<Integer>();,也就是要用int`型的包装类类型来解决基本类型不可以做泛型参数的问题。 一句话,包装类有更多的方法和用途,而这是基本类型没有的!!!