【发布时间】:2015-05-23 21:48:25
【问题描述】:
我正在学习 == 与 equals() 并做各种示例。对于这个,我明白为什么 r==s 是假的,但是如果它们现在都具有相同的内容,为什么 r.equals(s) 是假的?
public class StringProgram{
public static void main(String[] args) {
Person r = new Person("A");
Person s = new Person("J");
s.setName("A");
System.out.println(r.getName());//A
System.out.println(s.getName());//A
System.out.println(r==s);//false
System.out.println(r.equals(s));//false
}
}
这是Person的代码:
public class Person{
private String name;
public Person(String d){
name=d;
}
public void setName(String a){
name=a;
}
public String getName(){
return name;
}
}
编辑:我看到我现在必须重写它,但我仍然不明白下面示例中的分配是如何工作的。我只是不明白如果将 t 分配给 u,为什么 t.getName() 是 Keen。
公共类 StringProgram{ public static void main(String[] args) {
Person t = new Person("Gene");
Person u = t;
u.setName("Keen");
System.out.println(t.getName());//Keen
System.out.println(t.equals(u));//true
} }
【问题讨论】:
-
没有
Person的代码我们怎么知道? -
@pathfinderelite 在问题得到澄清之前你不能说它是重复的
-
public class Person{ 私有字符串名称;公共人员(字符串 d){ name=d; } public void setName(String a){ name=a; } public String getName(){ 返回名称; }
-
您需要在
Person中覆盖equals。