Java基础回顾Object类的方法重写

来源:互联网 发布:基于内容协同过滤算法 编辑:程序博客网 时间:2024/05/30 05:41
/** * * A:Object类概述 * 类层次结构的根类 * 所有类都直接或者间接的继承自该类 * B:构造方法 * public Object() * 回想面向对象中为什么说: * 子类的构造方法默认访问的是父类的无参构造方法 */public class Test {    public static void main(String[] args) {//        Student student=new Student("sanmao",14);//        Student student1=new Student("sanmao",14);//        System.out.println(student.equals(student1));//        System.out.println(student.getClass());        //单例类        SingleClass singleClass=SingleClass.getInstance();        SingleClass singleClass1=SingleClass.getInstance();        System.out.println(singleClass==singleClass1);        /**         * public final Class getClass()         * a:返回此 Object 的运行时类。         * b:可以通过Class类中的一个方法,获取对象的真实类的全名称。         * public String getName()*/        Object obj=student.getClass();   //class com.sanmao5.Student        System.out.println(obj.getClass());  //class java.lang.Class        String a="aaaa";        String b="aaaa";        String c=new String("aaaa");        String d=new String("aaaa");        String e="bbbb";        Student s=new Student("sanmao",44);        //System.out.println(c);        System.out.println(a.hashCode());        System.out.println(b.hashCode());        System.out.println(c.hashCode());        System.out.println(d.hashCode());        System.out.println(e.hashCode());        System.out.println(a==c);        /**         * ###11.20_常见对象(==号和equals方法的区别)(掌握)         * ==是一个比较运算符号,既可以比较基本数据类型,也可以比较引         * 用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值         * equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承         * Object类中的方法,如果没有重写Object         * 类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的         * equals方法比较的是对象中的属性*/    }}public class Student {    private String name;    private int age;    public Student(String name,int age){        this.name=name;        this.age=age;    }    /**     * public String toString()     * a:返回该对象的字符串表示。     *     public Stirng toString() {     return name + "," + age;     }     * b:它的值等于:     * getClass().getName() + "@" + Integer.toHexString(hashCode())     * c:由于默认情况下的数据对我们来说没有意义,一般建议重写该方法。     * B:最终版     * 自动生成     */    @Override    public String toString(){//toString(),是Object存在的非抽象方法原来是返回地址        return "name="+name+"  age="+age;    }    /**     * a:指示其他某个对象是否与此对象“相等”。     * b:默认情况下比较的是对象的引用是否相同。     * c:由于比较对象的引用没有意义,一般建议重写该方法。     */    @Override    public boolean equals(Object obj) {    //     return super.equals(obj);        if(this==obj)            return true;        if(this==null)            return false;        if(!(this instanceof Student)) //对象1 instanceof 对象2, 对象2(实例)                                       //instanceof 只比较同一类型对象             return false;             //是不是对象1的实例        if(!name.equals(((Student)obj).getName()))            return false;        if(age!=((Student)obj).getAge())            return false;        if(hashCode()!=obj.hashCode())            return false;        return true;    }    /**     * * public int hashCode()     * a:返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。     * b:不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。     */    @Override    public int hashCode() { //数据存储方式//        return super.hashCode();        int hashcode=name.hashCode();        return 37+hashcode+age;    }    public String getName(){        return name;    }    public int getAge(){        return age;    }}
0 0
原创粉丝点击