当前位置: 移动技术网 > IT编程>开发语言>Java > equals方法那些事

equals方法那些事

2019年05月12日  | 移动技术网IT编程  | 我要评论

1.equals

很多人对equals方法的用法有些模糊,这里来为大家梳理下:

字符串中的equals方法,该方法用来判断两个字符串的内容是否相同。

例1:

string str1="hello";
        string str2="hello";
        string str3="java";
 //字符串默认比较的是内容是否相同
//"=="号比较
system.out.println("str1==str2:" + (str1 == str2));//true
system.out.println("str1==str3:" + (str1 == str3));//false
//equals比较
system.out.println("str1.equals(str2):" + str1.equals(str2));//true
system.out.println("str1.equals(str3):" + str1.equals(str3));//false

从例1中我们可以看出,两个字符串之间的比较,无论用”==”号还是equals来进行,只要内容相同,结果就为true,内容不同,结果就为false;因此可以看出在字符串中,equals是用来判断两个字符串的内容是否相同.

那么在两个自定义对象之间的比较,是不是也是只要内容相同,就为true呢?我们来看代码:

例2:

//比较两个对象是否相同
person p1 = new person("小明", 18);
person p2 = new person("小明", 18);
system.out.println("p1.equals(p2):" + p1.equals(p2));//false

从例2中看,结果是false!!!这是为什么呢?

我们来分析下源码:

按住crtl+左键单击string 可以进入字符串源码中,

 

可以看出,string类重写了object类的equals方法,所以能够完成内同比较功能。如果是我们自定义类的两个对象要进行比较内容是否相同,也需要进行覆盖重写object中的equals方法

object中的equals方法后结果为true了

//比较两个对象是否相同
        person p1 = new person("小明", 18);
        person p2 = new person("小明", 18);
//        system.out.println("p1.equals(p2):" + p1.equals(p2));//false
        system.out.println("p1.equals(p2):" + p1.equals(p2));//true

  

总结:

1.默认地址比较

如果没有覆盖重写equals方法,那么object类中默认进行==运算符的对象地址比较,只要不是同一个对象,结果必然为false。

2.对象内容比较

如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法,在重写的equals方法中实现逻辑。

重点:如果要用equals方法对对象的内容比较,一定要重写object中的equals方法!!!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网