28 Object类

28 Object类

含义

任何类的直接父类或间接父类数组

经常使用操做(被子类重写的方法)

1.toString方法

对于引用数据类型,打印变量名的时候自动调用toString方法,默认打印的是地址,ide

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
        //默认打印的是地址
}

若是不想打印地址,那么就在相应的子类里面重写子类this

public class Student {
    private  String name;

    public Student(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                '}';
    }
}
public class TestStudent {
    public static void main(String[] args) {
        Student student=new Student("张三");
        System.out.println(student);
    }
}

没有重写toString方法时,默认打印的是地址3d


重写toString方法时,打印的是里面的内容code

2.equals方法

本质对象

调用(若是是基本数据类型,则比较内容,不是则默认比较地址,例如bject的equals源码以下:)blog

public boolean equals(Object obj) {
        return (this == obj);
}

但String类(final数组)中的equals方法是重写了Object的equals方法,比较是其中每一个字符的内容接口

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

3.clone方法(浅拷贝---只会拷贝引用地址)

用途:使一个新对象中有已经创建对象的数据内容(克隆)get

在object类中,clone方法的访问权限是protectd源码

protected native Object clone() throws CloneNotSupportedException;

子类要想调用clone方法,必需要有如下步骤

1.extends Object

2.且实现Cloneable接口

3.重写(override)clone方法(Alt+Enter快捷键)

4.调用到处理重写clone方法的throws抛出的CloneNotSupportedException异常

public class Student extends Object implements Cloneable{
    private  String name;

    public Student(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                '}';
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
public class TestStudent {
    public static void main(String[] args) {
        Student student=new Student("张三");
        System.out.println("student学生的信息为: "+student);
        //try...catch用来接收调用clone()方法时,经过throws抛过来的异常
        try {
              Student student1=(Student) student.clone();//想把student对象里面的信息赋值给student1
            System.out.println("student1学生的信息为: "+student1);
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();//打印异常处理的信息
        } finally {

        }
    }
}
相关文章
相关标签/搜索