Integer == 和equals的区别
来源:互联网 发布:淘宝卖家如何提前收款 编辑:程序博客网 时间:2024/06/05 15:32
大家对Java的基本类型与封装类都已经很熟悉了。但是在使用中是否了解其中一些基本原理呢。下面代码对不了解基本实现的人可能会颠覆对java的认知。代码如下。
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
输出结果可能大家都想到了是什么,没错就是:
true
true
在看一下下面代码,会输出什么呢?
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
输出结果:
false
true
结论:大家都知道”==“是比较两个变量的值是否相等、对于引用型变量表示的是两个变量在堆中存储的地址是否相同。 equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
但是为什么等于1的时候==返回是true呢?
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
也就是说在-128到127之间的值会缓存到IntegerCache.cache中,所以在Integer x=在-128到127之间时,返回的是同一个对象,所以出现了上文的情况。(如果换成 >、>=、<、<=会出现什么情况呢?这中情况会自动拆箱比较值,也就是下面的拆箱操作。)
在看下面代码
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
输出结果:
true
true
原理:因为与初始化值做比较的时候,会将封装类型进行拆箱操作,转换为基本类型。这里比较的就是基本类型的值了。
- 1
- 2
- 3
- 1
- 2
- 3
以上理解为个人看胖哥的书做的一些总结与理解,也是对自我的提高,如有理解错误或偏差的地方望大家留下宝贵意见。
阅读全文
0 0
- Integer == 和equals的区别
- Java Integer的==和.equals()之间的区别
- 关于Integer类中equals和"=="的区别
- Integer String 的equals == 区别
- 【Java基础】equals和==的区别以及Integer(-128~127)值的==和equals比较
- ==和equals方法的区别以及Integer和String的应用
- Java中equals和==的区别(Integer[-128~127])
- Integer包装类比较时“==”和equals()的区别及原因
- Java中int,Integer,equals,==的区别
- “=”和“equals()”的区别
- String 和Integer中 == 和 equals的使用
- Integer ==和equals里面的坑
- java ==和equals、equals和hashCode的区别
- int、Integer,"=="和equals() 辨别?
- Integer对象和 ==、equals分析
- Integer equals 和 == 比较
- Integer下的==与equals
- 关于“==”和“equals”的区别
- 中国美术史-蒋勋有声书
- C++中STL的介绍和vector容器的介绍
- 0816memo
- 企业的IT架构
- HDU 1421 搬寝室
- Integer == 和equals的区别
- 树结构练习——排序二叉树的中序遍历
- Oracle数据库基础(一)
- springMVC 乱码问题(和数据库无关)
- 提供一个AES128位/CBC模式加解密工具类
- JAVA发送HttpClient请求及接收请求结果过程
- 内存空间分配,以及malloc、calloc、realloc、alloca、realloc的区别
- OpenJudge百炼-2803-碎纸机-C语言-递归
- 暑假第15天总结