黑马程序员-Java的自动拆箱和装箱
来源:互联网 发布:文怡小虫淘宝 编辑:程序博客网 时间:2024/05/17 04:48
---------------------- android培训、java培训、期待与您交流! ----------------------
Java1.5引入了其中一个新特性就是自动装箱和拆箱,首先我们需要知道为什么会有自动拆箱和装箱,那是因为java除了有8种基本数据类型外,还提供了与8种基本数据类型一一对应的对象,那么为什么会有提供这几种对象呢,那是因为有时候,我们需要将基本数据类型转换为对象,例如在使用Map对象要操作remove()方法时,需要传入的参数是对象而不是基本数据类型,而如果每一次你需要将基本数据类型转换为对象是都需要使用如
Integer i = new Integer(1);这样就比较麻烦了,为此,java1.5之后便提供了一种简单的方法,就是有虚拟机自动为你转换,你只要写Integer I = 1;在这个过程中java虚拟机自动把1装入一个对象中,因此称为自动装箱。同理,要把一个对象转换为基本数据类型的时候你也不用再int I = (Integer对象).intValue()这样写了,只要int I = (Integer对象)就可以了,这就是自动拆箱。但是使用自动拆箱和装箱也是有需要注意的如,比较下面两个式子的结果
1
Integer i1 = 200;Integer i2 = 200;if(i1 == i2) System.out.println(i1 == i2);else System.out.println(i1 == i2);
2
Integer i1 = 20;Integer i2 = 20;If(i1 == i2) System.out.println(i1 == i2);else System.out.println(i1 == i2);
根据自动装箱和拆箱的机制,我们会以为结果是相等的,但是结果确是不同的,其实,==除了来比较两个基本数据类型的变量值是否相等外,也用来判断两个对象引用名称是否参考至同一个对象,在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,所以当i1和i2在一个字节内时是参考至同一个对象的,但是如果超过一个字节,被装箱的Integer对象并不会被重用,所有i1和i2用==比较时是不相等的。
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:edu.csdn.net/heima
- 黑马程序员-Java的自动拆箱和装箱
- 黑马程序员:关于JAVA中的自动装箱拆箱
- 黑马程序员-java自动装箱于拆箱
- 《黑马程序员》枚举及自动装箱和拆箱
- (黑马程序员)Java基础加强(第一天)05-java5的静态导入和自动装箱拆箱
- 黑马程序员 java高级技术1.5之自动装箱和拆箱(张孝祥)
- 黑马程序员:自动装箱与拆箱、
- 黑马程序员-自动装箱与拆箱
- 黑马程序员-----自动装箱与拆箱
- 黑马程序员——自动装箱 拆箱的理解
- 黑马程序员--java 静态导入、可变参数、数据类型的自动拆箱与装箱、枚举
- 黑马程序员__ 基本数据类型的自动拆箱和装箱
- JavA的自动装箱和拆箱
- Java的自动拆箱和装箱
- java的自动装箱和拆箱
- 黑马程序员--枚举,增强for循环,可变参数,静态导入,自动拆箱和自动装箱
- 黑马程序员 Java高新技术(eclipse的使用,静态导入,可变参数,增强for,自动拆箱与装箱)
- Java自动装箱和自动拆箱的陷阱
- Android Camera Architecture (Android Camera架构)
- 第2章 抽象工厂模式(Abstract Factory)
- flex 只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源
- 使用rowid查找表中唯一记录
- Dom笔记3:Dom常用事件(body 、 document 对象的事件)
- 黑马程序员-Java的自动拆箱和装箱
- hadoop中的start-all.sh小看
- Some Ruby Tips
- 内存分配方式
- 第3章 建造者模式(Builder Pattern)
- Hibernate
- 第4章 工厂方法(Factory Method)
- java线程同步简单例子
- 选择文件和文件夹的对话框