Java中==和equals()方法的区别
来源:互联网 发布:时时彩平台源码下载 编辑:程序博客网 时间:2024/05/17 03:27
一般情况
我们可以这么理解,==
是对引用的比较,也就是比较两个对象是否指向相同的存储位置。而equals()
是比较两个对象的值是否相等。
这个在一般情况下是成立的,但是……
我们通过查看jdk源码,发现:
public boolean equals(Object obj) {
return (this == obj);
}
发现没有,equals()
方法最开始的判断依据就是比较两个对象是否相等,也就是说和==
用法是相同的,没有区别。
但是由于equals()
是可以被override
(覆盖,覆写)的,所以我们可以将equals()
改成我们想要的方法。例如:String 类型里面,equals()
被改写成:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n- - != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
也就是比较两个String类的对象里面的字符是否相等。
所以可以这么理解,如果equals()
方法没有被覆写,那么他就会默认比较两个对象的地址,这个和==
是一个意思。如果equals()
方法被覆写了,我们就得依据覆写的新方法来判断。
注意:
- 基本类型的对象是没有
equals()
方法的,但是其包装类是有equals()
方法的,比较的是对象的内容。 - 如果我们在覆写
equals()
方法时,要记得覆写hashCode()
,这样不会造成冲突,因为如果equals()
返回的结果是true
的话,这两个对象的hashCode()
方法返回的值一定相同,反过来未必是正确的。
(continued)
- java中equals方法和“==”的区别
- java中equals方法和“==”的区别:(转)
- java中equals方法和“==”的区别
- java中equals方法和“==”的区别
- JAVA中==和equals方法的区别
- java中equals方法和“==”的区别
- Java中equals方法、==和hashCode的区别
- Java中equals方法和==号的区别
- Java中equals()方法和==的区别
- Java中==和equals()方法的区别
- Java中 ==和equals方法的区别
- Java中equals()方法和“==”的区别
- java中==和equals()方法的区别
- Java中equals方法和==的区别
- Java中==和equals方法的区别
- JAVA中equals方法和==的区别
- Java中equals方法和==的区别
- java中equals方法和“==”的区别:
- poj 2485 Highways
- 字符串拷贝函数的安全用法模板
- 二叉树结点
- 汉诺塔分治演示备忘
- 二叉树
- Java中==和equals()方法的区别
- 浅谈C语言中的联合体
- python数据挖掘领域工具包
- php正则表达式—基本语法
- java 性能调优
- JDK,JRE在mac OS X中的目录结构
- java 性能调优
- C语言动态内存管理
- poj 2955 Brackets(区间dp)