Java装箱与拆箱
来源:互联网 发布:javascript matlab 编辑:程序博客网 时间:2024/05/16 00:37
基本类型:boolean,char,btye,short,int,long,float,double
基本类型包装类:Boolean,Character,Byte,Short,Integer,Long,Float,Double
装箱是指将基本数据类型封装为对象类型。
拆箱是指将对象类型转换成基本数据类型。
装箱和拆箱都是编译器自行完成的。
装箱的实质是调用Integer.valueof()方法。
/*装箱与拆箱的实例*/Integer num = 10;//装箱int i = num;//拆箱
int i=10;Long l=i;//用int类型来对Long进行装箱是不行的Long l=(long)i;//但是可以把int强制转成long在装箱Long l=10;//也不行,因为默认的整型是int类型
Integer i1=10;Integer i2=10;Integer i3=new Integer(10);Integer i4=new Integer(10);if(i1==i3) System.out .println("true");else System.out .println("false");if(i1==i2) System.out .println("true");else System.out .println("false");if(i3==i4) System.out .println("true");else System.out .println("false");
输出结果是:false
true
false
Integer是类,它的实例对象用"=="比较时,比较的是对象而不是对象的值。第一个和第三个的结果是false,很容易理解,为什么第二个的结果是true?
难道是因为i1和i2都是装箱得到的,而它们的值又相等。我们再来看一个例子吧!
Integer i1=128;Integer i2=128;if(i1==i2) System.out .println("true");else System.out .println("false");
输出结果是:false
为什么这次两个相同的值装箱给两个Integer,它们有不相等呢?
这是因为,在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象,而如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个 Integer对象。
这个规则对Byte,Short,Long同样适用。
这个规则在对Charater适用时,范围变成了0到127,因为字符转换成int后不可能有负数。
0 0
- java装箱与拆箱
- Java装箱与拆箱
- JAVA装箱与拆箱
- Java拆箱与装箱
- Java 拆箱与装箱
- java装箱与拆箱
- Java装箱与拆箱
- Java装箱与拆箱
- Java装箱与拆箱
- java jdk5 中的装箱与拆箱
- JAVA自动装箱与拆箱
- java jdk5 中的装箱与拆箱
- java的自动装箱与拆箱
- java自动装箱与拆箱
- Java 自动装箱与拆箱
- java 自动拆箱与装箱
- Java 自动装箱与拆箱
- Java 自动装箱与拆箱
- Android 常驻与非常驻型广播的区别,及ListView优化,Android新手基本知识巩固
- Android 上手机跟机顶盒应用开发的区别
- 未来的服务器长啥样儿?PMC给你答案
- 39.最长不降子序列 (15分)
- lua utf-8编码的汉字
- Java装箱与拆箱
- ConnectWeb
- IE 动态绑定click事件
- java NIO和Reactor模式
- 40.x的y次方后三位 (5分)
- 第十周项目四——大奖赛计分拓展(2)错误求解
- Java常用类详解
- Android EditText 改变边框颜色
- C++创建最大堆