目录
一:装箱与拆箱
Java中的基本数据类型不是对象型(引用类型)。但是在程序中有时需要对对象而不是基本数据类型进 行操作。因此,java里提供了一种叫做包装类(wrapper),它能够把基本数据类型包装成对象类型。通俗的理解:装箱:基本类型转换成封装类型, 拆箱:封装类型转换成基本类型 这么一个过程。
基本数据类型及包装类型的对应关系:
byte Byte char Character double Double float Float
int Integer long Long short Short boolean Boolean
| 基本类型 | 包装器类型(对象类型) valueOf() .parse() |
| boolean | java.lang.Boolean |
| char | Character |
| int | Integer |
| byte | Byte |
| short | Short |
| long | Long |
| float | Float |
| double | Double |
自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象。自动装箱与拆 箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接。
如果你在Java1.5下进行过编程的话,你一定不会陌生这一点,你不能直接地向集合(Collections)中放入 原始类型值,因为集合只接收对象。通常这种情况下你的做法是,将这些原始类型的值转换成对象,然后将 这些转换的对象放入集合中。使用Integer,Double,Boolean等这些类我们可以将原始类型值转换成对应的对 象,但是从某些程度可能使得代码不是那么简洁精炼。为了让代码简练,Java 1.5引入了具有在原始类型和 对象类型自动转换的装箱和拆箱机制。但是自动装箱和拆箱并非完美,在使用时需要有一些注意事项,如果 没有搞明白自动装箱和拆箱,可能会引起难以察觉的bug。
Integer i = 5;//装箱操作
int n = i;//拆箱操作
Integer i=5;//装箱操作
System.out.println(i);
int n = i;//拆箱操作
System.out.println(n);

二,装箱与拆箱的作用与实现
Java中的包装器类有两个主要的作用:
1.提供一种机制,将基本值“包装”到对象中,从而使基本值能够包含在为对象而保留的操作中,或者 从带对象返回值的方法中返回。注意,java5增加了自动装箱和拆箱,程序员过去需手工执行的许多包装操 作,现在可以由java自动处理了。
2.为基本值提供分类功能。这些功能大多数于各种转换有关:在基本值和String 对象间相互转换,在 基本值和String 对象之间按不同基数转换,如二进制、八进制和十六进制等。
装箱与拆箱的实现原理:
- Java把内存划分成两种:一种是栈内存,另一种是堆内存。
- int是基本类型,直接存数值;而 Integer是类,产生对象时用一个引用指向这个对象。
- 封装类位于java.lang包中。
- 封装类是引用传递而基本类型是值传递
- 基本类型的变量和对象的引用变量都是在函数的栈内存中分配 ,而实际的对象是在存储堆内存中
405



被折叠的 条评论
为什么被折叠?



