记录自己今天理解的 equals 方法
来源:互联网 发布:激光打标机软件配套 编辑:程序博客网 时间:2024/05/20 23:36
今天在看java视频的时候,没有理解他所讲的 equals 方法,于是百度、问同学,总算弄懂了(也许只是我觉得懂了),就像记录一下自己的见解。
a:
String s1,s2;
s1 = new String("god");
s2 = new String("god");
System.out.println(s1.equals(s2));
这里的结果是 true,因为这里的equals比较的是两个对象的内容即“god”,而如果是这样的话:
b:
public class EqualsTest
{
public static void main(String[] args)
{
Student s1 = new Student("zhangsan");
Student s2 = new Student("zhangsan");
System.out.println(s1.equals(s2));
}
}
class Student
{
String name;
public Student(String name)
{
this.name = name;
}
}
这是为什么?
后来了解了,原来在a中的s1,s2因为是String类型的,而在源代码中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;
}
而在b中,因为s1,s2是Student类型的,而Student类没有重写equals方法,s1.equals(s2) 调用的是Object类中的equals方法,而Object类中的equals方法是比较地址的,如下是Object中的equals方法
public boolean equals(Object obj) {
return (this == obj);
}
所以,equals方法比较的是s1,s2的地址,而不是内容,所以输出就会为false.
总结的话,就是说如果说比较的对象的类中没有重写equals方法,那么就是比较的地址,如果比较的对象的类中重写了equals方法,那么就要看重写后的方法实现的是什么。
- 记录自己今天理解的 equals 方法
- equals方法的理解
- 今天开始记录自己的点点滴滴
- 如何编写自己的equals方法
- 从今天开始记录自己想记录的
- java equals()和hashcode()方法的理解
- hashCode和equals方法的理解
- hashCode()、equals()以及compareTo()方法的理解
- hashCode()、equals()以及compareTo()方法的理解
- equals,hashCode 方法 的重新理解
- hashCode()、equals()以及compareTo()方法的理解
- hashCode()、equals()以及compareTo()方法的理解
- hashCode()与equals()方法的理解
- hashCode()、equals()以及compareTo()方法的理解
- equals,hashCode 方法理解
- equals,hashCode 方法理解
- 记录自己理解的一些设计模式
- 从今天开始,我要记录自己C++的成长!
- 读书笔记---Linux常用命令解析
- 按层遍历二叉树
- 题目1134:密码翻译
- deal 用来传值的php
- 剑指offer--矩形覆盖
- 记录自己今天理解的 equals 方法
- 《coredump问题原理探究》Linux x86版7.4节List coredump例子
- 实验楼的laravel 4.2 blog 教程(五)
- 第七周项目三——第8、9章的知识点思维导图
- C++编程命名规范
- Java核心技术I——基础点拾掇(第三章)
- sql
- Crypto LAB
- 对"对象的多个属性"进行匹配搜索"对象数组"的算法