拆箱和装箱的小知识
来源:互联网 发布:淘宝银座365是正品吗 编辑:程序博客网 时间:2024/05/18 20:04
Integer a1 =
127
;
Integer b1 =
127
;
if
(a1==b1){
System.out.println(
"相等"
);
}
else
{
System.out.println(
"不等"
);
}
Integer a =
128
;
Integer b =
128
;
if
(a==b){
System.out.println(
"相等"
);
}
else
{
System.out.println(
"不等"
);
}
代码运行结果是:
相等
不等
Integer包装类型,在java中包装类型和基本类型可以互相转换,引入包装类的概念是为了实现
1.实现基本类型之间的转换
2.便于函数传值
3.在一些地方要用到Object的时候方便将基本数据类型装换
但是自动拆箱和装箱有一个问题:
java基本类型的数据和包装类型的数据自动拆箱和装箱的过程中,如果缓存中已经存在值为-128~127之间的数据,再次输入的值和缓存中的数据一致时,可以直接指向这个地址,如果超过了,则会重新创建一个新实例
在进行自动拆装箱时,编译器会使用Integer.valueof()来创建Integer实例
如果传入的int在-128和127之间,那就尝试看前面的缓存中有没有打过包的相同的值,如果有就直接返回,否则就创建一个Integer实例。
来看一下Integer.valueof()的源代码:
- public static Integer valueOf(int i) {
- assert IntegerCache.high >= 127;
- if (i >= IntegerCache.low && i <= IntegerCache.high)
- return IntegerCache.cache[i + (-IntegerCache.low)];
- return new Integer(i);
- }
所以就有了上面的代码结果
0 0
- 拆箱和装箱的小知识
- 关于Integer自动装箱和拆箱的小知识
- java中自动拆箱和装箱的小细节
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 拆箱和装箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- go中channel简单使用
- Lua代码编写注意点
- Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant)
- hdu2149——Public Sale(巴什博弈)
- Myeclipse2014 创建WebService 服务端简单示例
- 拆箱和装箱的小知识
- lua中的全局函数
- MFC对话框背景图片的设置
- AES加密CBC模式兼容互通四种编程语言平台【PHP、Javascript、Java、C#】
- 【转载】ABAP 动态列表的创建
- org.hibernate.hql.ast.QuerySyntaxException is not mapped异常
- Android重力感应开发
- HTTP、HTTPS
- JDBC核心类