热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Integer与int赋值比较

测试代码:@TestpublicvoidIntegerTest(){Integeri0159;inti0259;Inte

测试代码:

 @Test
public void IntegerTest() {
Integer i01
= 59;
int i02 = 59;
Integer i03
= Integer.valueOf(59);
Integer i04
= new Integer(59);
System.out.println(i01
==i02);
System.out.println(i01
==i03);
System.out.println(i03
==i04);
System.out.println(i02
==i04);
}

运行结果:

true
true
false
true

断点调试分析结果:

i01是引用类型,如图引用的地址为Integer@651

i02是值类型

i03是引用类型,因为引用类型值放在堆里面,如果堆里有值,i03这种取值方式就直接引用原有值的地址Integer@651

i04是引用类型,但是i04是new创建新对象,要在堆里新开空间存放值,也就会有新地址Integer@652

i01与i02比较,引用类型和值类型用等号比较,比较的是值(引用类型自动拆箱为int),故返回true;

i01与i03比较,引用类型和引用类型用等号比较,比较的是地址,两个地址一样,故返回true;

i03与i04比较,引用类型和引用类型用等号比较,比较的是地址,两个地址不同,故返回false;

i02与i04比较,值类型与引用类型用等号比较,比较的是值(引用类型自动拆箱为int),故返回true;


推荐阅读
author-avatar
qweqwe
这个家伙不难、有留下一点东西、留下了脚印~!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有