equals 与 ==
来源:互联网 发布:黑暗之光披风升阶数据 编辑:程序博客网 时间:2024/06/06 04:13
“==”比的是什么?
基本数据类型
在Java中有8种基本数据类型:
- 浮点型:float(4 byte), double(8 byte)
- 整型:byte(1 byte), short(2 byte), int(4 byte) , long(8 byte)
- 字符型: char(2 byte)
布尔型: boolean(JVM规范没有明确规定其所占的空间大小,仅规定其只能够取字面值”true”和”false”)
对于这8种基本数据类型的变量,变量直接存储的是“值”,因此在用关系操作符==来进行比较时,比较的就是 “值” 本身。要注意浮点型和整型都是有符号类型的,而char是无符号类型的(char类型取值范围为0~2^16-1).
引用类型的变量
引用类型的变量存储的并不是 “值”本身,而是它指向的对象在内存中的存储地址。
equals比的是什么?
equals方法是基类Object中的方法,因此对于所有的继承于Object的类都会有该方法。为了更直观地理解equals方法的作用,直接看Object类中equals方法的实现。
/* @param obj the reference object with which to compare. * @return {@code true} if this object is the same as the obj * argument; {@code false} otherwise. * @see #hashCode() * @see java.util.HashMap */ public boolean equals(Object obj) { return (this == obj); }
很显然,在Object类中,equals方法是用来比较两个对象的引用是否相等,即是否指向同一个对象。
String类对equals方法进行了重写,用来比较指向的字符串对象所存储的字符串是否相等。
其他的一些类诸如Double,Date,Integer等,都对equals方法进行了重写用来比较指向的对象所存储的内容是否相等。
总结:
1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date、Integer等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
Reference
http://www.cnblogs.com/dolphin0520/p/3592500.html
- == 与 equals()
- equals与==
- equals与"=="
- equals与==
- ==与equals()
- ==与equals()
- equals 与==
- “==”与equals
- == 与 equals()
- == 与equals
- == 与equals
- ==与equals()
- == 与 equals
- equals()与==
- "=="与“equals()”
- equals与==
- ==与equals
- equals与==
- 反射:使用反射调用构造器创建对象
- 使用 svm+hog 训练,检测手写数字
- JAVA学习中的心得和小程序
- 小白学分布式程序开发3-分布式系统的数据一致性问题
- SpringBoot学习:使用spring-boot-devtools进行热部署
- equals 与 ==
- 后端api之路——初窥门径
- Ultra-QuickSort 求最小交换次数即求逆序对数 树状数组+离散化
- 深度学习(一)——MP神经元模型, BP算法, 神经元激活函数, Dropout
- BC系列教程下载地址
- ClassNotFoundException: org.apache.jsp.index_jsp错误解决方案
- poj2115 扩展欧几里德算法小结
- pwn工具箱之unsorted bin attack
- /etc/ld.so.conf文件