6.3.1 Object类
**
- public boolean equals(Object obj) :
该方法本意用于比较两个对象的封装的数据是否相等;而比较运算符“==”在比较两对象变量时,只有当两个对象引用指向同一对象时才为真值。但在Object类中,equals方法是采用“==”运算进行比较;若表示对象的数据比较,要重写equals()方法;
- public String toString():该方法返回对象的字符串描述;
- public final Class getClass():返回对象的所属类;
protected void finalize(): 该方法Java垃圾回收程序在删除对象前自动执行。
public class Point {
private int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public boolean equals(Point p) {
return (x == p.x && y == p.y);
}
public String toString() {
return "点:" + x + "," + y;
}
public static void main(String arg[]) {
Point x=new Point(4,3);
System.out.println("x="+x);
System.out.println( x.equals(new Point(4,3)) );
}
}
运行结果:
x=点:4,3
true
【思考】
1、观察有无toString()方法时程序运行结果的变化。
无toString()运行结果:
x=Point@404b9385
true
2、观察有无equals(Point p)方法程序运行结果的变化。
无equals(Point p)运行结果:
x=点:4,3 (没有重写equals方法则是引用的比较)
false
```java public class IsEqual { int x; public IsEqual(int x1) {
x=x1;
} public static void main(String a[ ]) {
IsEqual m1=new IsEqual(4);
IsEqual m2=new IsEqual(4);
IsEqual m3=m2;
m3.x=6; //注释后呢?
System.out.println("m1=m2 is "+(m1==m2));
System.out.println("m2=m3 is "+(m2==m3));
System.out.println("m1.x==m2.x is "+(m1.x==m2.x));
System.out.println("m1.equals(m2)="+m1.equals(m2));
} } 运行结果: m1=m2 is false m2=m3 is true m1.x==m2.x is false m1.equals(m2)=false
m3.x=6; //注释后呢? 运行结果: m1=m2 is false m2=m3 is true m1.x==m2.x is true m1.equals(m2)=false ```