Integer包装类比较时“==”和equals()的区别及原因
来源:互联网 发布:ec6108v9怎么安装软件 编辑:程序博客网 时间:2024/06/07 00:42
先看一段代码:
Integer i1 = 125;
Integer i2 = 125;
System.out.println( i1 == i2); //结果为true。
System.out.println( i1.equals(i2) ); // 结果也是true。
Integer i5 = 128;Integer i6 = 128;
System.out.println( i5 == i6); //结果却是false。
System.out.println( i5.equals(i6) ); //结果为true。
都是使用的“==”操作符,为什么两者的情况不同呢?
我们都知道,equals()方法针对引用类型数据,比较的是两个对象的引用所指的内容(在堆中开辟的两个空间的内容)是否相等,而"=="比较的是两个对象引用的地址值或者两个变量的数值(存放于栈中的内容)是否相等。
Integer i1 = 125;实际上可以看成是Integer i1 = Integer.Valueof(125);而在Integer的源码中(按住ctrl左击查看),已经在内存中准备好了一些数值,当需实例化一个新的Integer对象时,会先去缓存中检查是否有这个数值,有就直接返回该数值,没有就需要new出来。而缓存好的数值是有范围的,在-128到127之间。源代码如下:
阅读全文
0 0
- Integer包装类比较时“==”和equals()的区别及原因
- Integer == 和equals的区别
- Java 中 Integer 包装器类比较相等问题(拆箱、装箱、享元)
- Java Integer的==和.equals()之间的区别
- 关于Integer类中equals和"=="的区别
- 包装类的equals和==
- Integer等包装类及String类的对比 ==与equals()方法的机制与不同
- Integer String 的equals == 区别
- ==和equals的区别,较长,暂不深入
- Jetty和tomcat的三类比较
- Java中equals和==的区别(Integer[-128~127])
- 类比较的过程
- 【Java基础】equals和==的区别以及Integer(-128~127)值的==和equals比较
- ==和equals方法的区别以及Integer和String的应用
- 数值包装类型和equals和=
- Integer和int的区别,包装类,基本数据类型,区别
- Java中int,Integer,equals,==的区别
- JSP和Servlet的区别及PHP类比
- java 数组
- Generator 函数基础(一) (The Basics of ES6 Generators)
- TCP 连接管理与释放(三次握手,四次挥手)
- HDU 6048 Puzzle(找规律)——2017 Multi-University Training Contest
- 关于小程序在后台换取openid的方法
- Integer包装类比较时“==”和equals()的区别及原因
- JVM 新生代为何需要两个 Survivor 空间?
- c++存储持续性、作用域和链接性
- 字符串右移
- Nginx secure_link防盗链模块
- C++ 获取linux和windows系统的用户名
- Hyperledger Fabric 相关概念
- Linux xargs命令详解
- 一文了解各种卷积结构原理及优劣