• 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方法已经重写。

  • 相关阅读:
    Spring
    华为OJ题目:扑克牌大小
    冒泡排序算法总结
    华为OJ题目:刷题
    求立方根
    假硬币问题求解
    SQL in Qt (一)
    Qt3D教程
    (Qt 翻译) QGLAbstractScene
    (Qt 翻译) QGLSceneNode
  • 原文地址:https://www.cnblogs.com/031602523liu/p/8654179.html
Copyright © 2020-2023  润新知