—- Object类、Class类

6.3.1 Object类

**

  • public boolean equals(Object obj) :

该方法本意用于比较两个对象的封装的数据是否相等;而比较运算符“==”在比较两对象变量时,只有当两个对象引用指向同一对象时才为真值。但在Object类中equals方法是采用“==”运算进行比较;若表示对象的数据比较,要重写equals()方法;

  • public String toString():该方法返回对象的字符串描述;
  • public final Class getClass():返回对象的所属类;
  • protected void finalize(): 该方法Java垃圾回收程序在删除对象前自动执行。

    1. public class Point {
    2. private int x, y;
    3. public Point(int x, int y) {
    4. this.x = x;
    5. this.y = y;
    6. }
    7. public boolean equals(Point p) {
    8. return (x == p.x && y == p.y);
    9. }
    10. public String toString() {
    11. return "点:" + x + "," + y;
    12. }
    13. public static void main(String arg[]) {
    14. Point x=new Point(4,3);
    15. System.out.println("x="+x);
    16. System.out.println( x.equals(new Point(4,3)) );
    17. }
    18. }
    19. 运行结果:
    20. x=点:4,3
    21. true
    22. 【思考】
    23. 1、观察有无toString()方法时程序运行结果的变化。
    24. toString()运行结果:
    25. x=Point@404b9385
    26. true
    27. 2、观察有无equals(Point p)方法程序运行结果的变化。
    28. equals(Point p)运行结果:
    29. x=点:4,3 (没有重写equals方法则是引用的比较)
    30. false

    ```java public class IsEqual { int x; public IsEqual(int x1) {

    1. x=x1;

    } public static void main(String a[ ]) {

    1. IsEqual m1=new IsEqual(4);
    2. IsEqual m2=new IsEqual(4);
    3. IsEqual m3=m2;
    4. m3.x=6; //注释后呢?
    5. System.out.println("m1=m2 is "+(m1==m2));
    6. System.out.println("m2=m3 is "+(m2==m3));
    7. System.out.println("m1.x==m2.x is "+(m1.x==m2.x));
    8. 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 ```