Java Class Object

Object类

  • 它是所有类的基类。
public class Person
{
    
}
//实际上是
public class Person extends Object
{
    
}

Object类的方法


toString方法

  • 返回值是一个描述当前对象有关信息的字符串。默认定义是:“类名+@+哈希编码”。
  • 推荐每个类对toString方法重写。
public class TestToString
{
    public static void main(String args[])
    {
        Dog d = new Dog;
        System.out.println("d:="+d);            //系统会调用toString方法
    }
}
class Dog
{
    public String toString()            //重写
    {
        return "I'm a cool Dog!";
    }
}

哈希编码

  • 在Java程序中,会有很多个对象,程序执行的过程中会不断地使用这些对象。
  • Java虚拟机就要找到这些对象的地址。显然是不可能在内存中来回搜索。
  • 往往采取措施就是,用一张表来记录每个对象的位置,而这张表一般用哈希编码来记录,每个对象都有自己独一无二的哈希编码,根据这个编码就可以很快的确定这个对象的位置。
  • 它独一无二的代表了这个对象,还可以通过它来找到这个对象的位置

equals方法

  • 判断两个对象是否相同,是返回true,否则返回false。
  • 默认比较的根据是对象的地址
  • 不满足于这种比较方法,可以重写。
public class TestEquals
{
    public static void main(String args[])
    {
        Cat c1 = new Cat();
        Cat c2 = new Cat();
        System.out.println(c1 == c2);
        System.out.println(c1.equals(c2));
        //如果不重写,以上两种写法都是比较地址,换汤不换药
    }
}
class Cat
{
    int color;
    int height;
    int weight;
    //重写equals方法
    public boolean equals(Object obj)       //千万不能把形参写成Cat,这不符合重写的原则
    {
        if(obj == NULL) return false;       //空引用返回false;
        else
        {
            if(obj instanceof Cat)      /判断obj是不是Cat的一个对象
            {
               Cat c = (Cat)obj;       //Object对象强制转化为Cat对象
               if(c.color == this.color&&c.herght == this.height&&c.weight == this.weight)        //比较
               {
                   return true;
               }
            }
        }
        return false;
    }
}

总结


每个类从Object继承的时候,可能继承的Object中的方法已经重写。就比如String类中的equals方法已经重写。

原文地址:https://www.cnblogs.com/031602523liu/p/8654179.html