题目:(1)创建一个Dog类,它包含两个String域:name和says。在main()方法中,创建两个Dog对象,一个名字叫spot(叫声为“Ruff!”),另一个为scruffy(“Wurf!”)显示他们的叫声
(2)创建一个新的Dog索引,并对其赋值为spot对象。测试==和equlas方法比较引用的结果
分析:==和equlas方法的区别。
public class test {
public static void main(String[] args) {
Dog spot= new Dog("spot","Ruff!");
Dog scruffy=new Dog("scruffy","wuff!");
System.out.println(spot.name+" "+spot.says);
System.out.println(scruffy.name+" "+scruffy.says);
Dog spot1=spot;
System.out.println("spot1==spot "+(spot1==spot));
System.out.println("spot1.equals(spot) "+(spot1.equals(spot)));
System.out.println("scruffy==spot "+(scruffy==spot));
System.out.println("scruffy.equals(spot) "+(scruffy.equals(spot)));
}
}
class Dog{
String name;
String says;
public Dog(String name,String says){
this.name=name;
this.says=says;
}
}
结果:
spot Ruff!
scruffy wuff!
spot1==spot true
spot1.equals(spot) true
scruffy==spot false
scruffy.equals(spot) false
因为没有覆盖equals方法所以==和equals实质上是一样的。都是判断引用是否一样。
Object类中equals是这样写的(jdk1.8)
public boolean equals(Object obj) {
return (this == obj);
}