equals方法那些事
程序员文章站
2022-08-05 21:54:51
1.Equals 很多人对equals方法的用法有些模糊,这里来为大家梳理下: 字符串中的equals方法,该方法用来判断两个字符串的内容是否相同。 例1: 从例1中我们可以看出,两个字符串之间的比较,无论用”==”号还是equals来进行,只要内容相同,结果就为True,内容不同,结果就为Fals ......
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方法!!!
上一篇: asp连接access、sql数据库代码及数据库操作代码
下一篇: 想知道数据表的用户或系统异动时间