關於equals(),求問
如果equals()中傳入的字符串,則比較的是值(内容)而不是地址是這個意思嗎?
例如
String name;
public boolean equals(Object obj) {
if(obj==null)
return false;
Animal temp=(Animal)obj;
if(this.getName().equals(temp.getName())&&this.getMonth()==(temp.getMonth()))
return true;
else
return false;
}
這裏面的this.getName().equals(temp.getName()實質就是兩個字符串的值(内容)進行比較而不是比較地址?和下面這個原理是一樣的嗎?
String str1=new String("你好");
String str2=new String("你好");
flag=str1.equals(str2);
正在回答
你好!首先说明一下equals()方法的作用,就是为了比较内容而设计的。
字符串的equals()方法是JDK中已经定义好的,它已经重写了Object类的equals()方法,用来比较两个字符串的内容是否相等。
而我们自定义的类,没有重写equals()方法,如果此时有Animal类的两个对象one和two,使用one.equals(two)返回值是false,因为此时也不知道比较的依据,也就是到底是Animal中的某一个属性相等就让equals()返回true,还是几个属性都相等才返回true。此时,就需要重写equals()方法了。
而字符串的equals()方法在我们自定义的equals()方法中进行调用,完全是因为这里要对字符串进行比较。如果类中有字符串以外的属性,比如int age,那么进行整型比较时就会用到==运算符了。
因此,这里跟字符串的equals()方法没有直接关系
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
你好!关于第一个问题,指的是下面的equals()方法,还是this.getName().equals(temp.getName())中的equals()方法呢?
关于第二个问题,他们的意思是意义的,因为这里的equals()方法都是字符的equals()方法。
equals()方法的作用就是比较内容,==是用来比较地址的。
另外,区分我们自己重写的equals()方法和字符串的equals()方法。字符串的equals()方法是已经重写了Object类的equals()方法,作用是进行两个字符串内容的比较。而我们自己重写的equals()方法,代码需要我们来完成,根据我们的需求来写。
祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星