为什么用equals比较String的对象就相同,比较两个自定义类的对象就不相同

比如Dog是我定义的一个类。

String a =  new String();        

String b =  new String();

用a.equals(b)返回的是true。

Dog c = new Dog();

Dog d = new Dog();

用c.equals(d)返回的是false。

请专业的技术人员回答一下,不知道的,刚来学习的不要乱回答。

请专业的技术人员回答一下,不知道的,刚来学习的不要乱回答。

请专业的技术人员回答一下,不知道的,刚来学习的不要乱回答。

请专业的技术人员回答一下,不知道的,刚来学习的不要乱回答。

请专业的技术人员回答一下,不知道的,刚来学习的不要乱回答。

Arrivederc深蓝
浏览 1573回答 2
2回答

geelylucky

String重写过equal方法~~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; }另外Dog这个自定义类。如果重写了Dog的equal也可以达到相同效果。再延伸下去就是如果你要把Dog放到Set集合里。还需要重写hashcode即重写Dog的hashcode和equal方法来判断重复。具体为什么要重写hashcode和equal。step1.请先自己思考一下。step2.然后去网上搜索一下。step3.结合起来总结。希望你能把step3的输出写到这个帖子里,让更多的朋友看到。来share一下。

Caballarii

你需要在自定义类里面重写equals方法,方法里面判断什么情况下返回true,比如判断Dog里的属性是不是相等
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java