【总结】Object类

1.object简介

Java中所有的类都有一个共同的父类Object
共有12个成员方法

2.Object的方法

1.空参构造方法 object()

2.clone()

(1)Object对象有个clone()方法,实现了对象中各个属性的复制

(2)深克隆和浅克隆
浅拷贝:被复制对象的所有值属性都含有与原来对象的相同,而所有的对象引用属性仍然指向原来的对象。
深拷贝:在浅拷贝的基础上,所有引用其他对象的变量也进行了clone,并指向被复制过的新对象。
clone()方法是浅拷贝

(3)clone实现深克隆
如果被复制对象的属性包含其他实体类对象引用,那么这些实体类对象都需要实现cloneable接口并覆盖clone()方法

@Data
public class Person implements Cloneable {
    private String name;
    private Integer age;
    private Address address;
    @Override
    protected Object clone() throws CloneNotSupportedException {
        Object obj=super.clone();
        Address a=((Person)obj).getAddress();
        ((Person)obj).setAddress((Address) a.clone());
        return obj;
    }
}

3.equals()和hashcode()

  1. equals():方法体内 return (this == obj) 判断两个对象地址是否一致来判断是否返回true
    而大部分情况需要我们根据内容来判断equals是否返回true,这就需要重写equals方法
  2. hashcode():hashCode()被设计是用来使得哈希容器能高效的工作。有一些哈希容器,比如Hashtable,HashMap等等。判断是否存在,如果用equals一个个比较,效率较低。可以先通过hash得到hash桶的位置,只需要遍历桶内的元素调用equals

4.wait()和wait(timeout)

导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。或超过等待时间

5.notify()或notifyall()

唤醒在此对象监视器上等待的单个/所有线程

6. finalize()

手动调用进行垃圾回收,不一定能实现回收

7.tostring()

打印string,格式可通过重写tostring方法定义

8. Class<? extendsObject> getClass()

返回一个对象的运行时类

class ObjectDemo2{
	public static void main(String[] args){
		Person p1 = new Person("huahua",20);
		Person p2 = new Person("fafa", 20);
		Class c1 = p1.getClass();//p1.getClass()拿到的是字节码文件(Person.class)
		Class c2 = p2.getClass();
		System.out.println(c1 == c2); //true
		
	}
}
posted @ 2020-11-23 10:00  mu_阿成  阅读(138)  评论(0)    收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css