Integer和int最本质的区别就是:Integer是封装类,int是基本数据类型(这是废话)。
本文是希望能对Integer和int的区别进行更详细的对比说明并加以举例
在说明Integer的时候有几个小知识点提一下:
public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }
几点说明
Integer a = new Integer(1); int b = 1; System.out.println(a == b);//true
两个通过new生成的Integer变量是永远不相等的(因为new生成的是两个新对象,内存地址不同)
Integer a = new Integer(1); Integer b = new Integer(1); System.out.println(a == b);//false
两个通过非new产生的Integer变量也是不相等的(因为非new产生的Integer变量指向Java常量池中的对象,而new产生的变量指向堆中新建对象,他俩所在的内存地址不同)
Integer a = new Integer(1); Integer b = 1; System.out.println(a == b);//false
两个非new产生的Integer变量比较:当值在-128~127之间时,结果为true,当值在此区间外结果为false(因为Integer常量池的存储范围是[-128,127],在此范围内是直接存储于常量池的,都指向同一个地址。在此范围外的数需要通过堆内存创建一个新对象。比如Integer a=1会将1写入缓存中,下次再写Integer b=1时会直接从缓存中去,不用new了,所以取到的地址也是相同的)
Integer a = 1; Integer b = 1; System.out.println(a == b);//true Integer a = 129; Integer b = 129; System.out.println(a == b);//false
到此这篇关于Integer和int的区别实例详解的文章就介绍到这了,更多相关Integer和int的区别内容请搜索菜鸟教程(cainiaojc.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持菜鸟教程(cainiaojc.com)!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#cainiaojc.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。