手撕java顶级父类Object

/*
        * 所有java类的顶级父类
        * 定义了所有类的通用方法
        * */
        /*创建一个Object对象*/
        Object obj = new Object();
        /*比较两个引用是否指向同一个对象this == obj,指针是否相等
        * 如果需要判断两个对象是否相同时需要重写equals方法
        * 重写equals方法的要求:
        * 自反性:对于任何非空引用x,x.equals(x)返回true;
        * 对称性:对于任何非空引用x,y,x.equals(y)返回true,那么y.equals(x)也要返回true;
        * 传递性:对于任何非空引用x,y,z,x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也要返回true;
        * 一致性:如果引用x,y没有任何变化,反复调用x.equals(y)返回结果应该是相同的;
        * 非空性:对于任何非空引用x,x.equals(null)返回false;
        * 必须重写hashCode()方法,两个对象相等hashCode()返回结果必须相同;
        * */
        obj.equals(new Object());
        /*
        * native方法(调用非java语言(c/c++)代码实现)
        * 返回一个对象的哈希码,对象的唯一标识
        * 两个对象相等哈希码也一定相等
        * */
        obj.hashCode();
        /*打印对象类名字和十六进制的哈希码getClass().getName() + "@" + Integer.toHexString(hashCode()*/
        obj.toString();
        /*native方法(调用非java语言(c/c++)代码实现)获得对象的类对象*/
        obj.getClass();
        /*native方法(调用非java语言(c/c++)代码实现)唤醒一个阻塞在该对象上的线程,
        如果有多个线程阻塞在这个对象上,则随机唤醒一个*/
        obj.notify();
        /*native方法(调用非java语言(c/c++)代码实现)唤醒一个阻塞在该对象上的所有线程*/
        obj.notifyAll();
        /*
        * native方法(调用非java语言(c/c++)代码实现)
        * 调用wait(0)方法实现,当前线程阻塞在该对象上,
        * 直到其他线程调用了该对象的notify()方法或者notifyAll()方法,唤醒当前线程
        * 当前线程被其他线程中断抛出InterruptedException异常
        * */
        try {
            obj.wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        /*
        * native方法(调用非java语言(c/c++)代码实现)
        * 当前线程阻塞在该对象上10毫秒,
        * 超时或者阻塞期间其他线程调用了该对象的notify()方法或者notifyAll()方法,唤醒当前线程
        * 当前线程被其他线程中断抛出InterruptedException异常
        * */
        try {
            obj.wait(10L);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        /*native方法(调用非java语言(c/c++)代码实现)
        * 当前线程阻塞在该对象上10毫秒+10微秒
        * 微秒参数的范围0-999999
        * 超时或者阻塞期间其他线程调用了该对象的notify()方法或者notifyAll()方法,唤醒当前线程
        * 当前线程被其他线程中断抛出InterruptedException异常
        * */
        try {
            obj.wait(10,10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        /*
        * 子类调用的方法,native方法,获得一个子类对象的副本
        * protected native Object clone() throws CloneNotSupportedException;
        * */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值