Java基础知识总结(03)

Object类有哪些方法?

 

        

         1.1 protected native Object clone() throws CloneNotSupportedException;(native关键字标识的方法,代表该方法通过C/C++实现)

            clone是浅拷贝;只克隆自身对象和对象内的实例变量的引用地址,但是使用该方法必须实现cloneable接口(扩充:深度拷贝使用objectStream;先将对象序列化;再反序列化)。

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

            很显然该方法,比较传入的对象和this地址是否相等,判断传入的对象是否和this是同一个对象。 

        1.3 protected void finalize() throws Throwable{}

            子类覆盖该方法来实现资源清理的工作,并且该方法是在GC回收对象之前调用该方法。

            扩展:final、finally和finalize的区别?

                final:对类、方法和变量的关键字修饰符。final修饰类时,该类不能被继承;final修饰方法时,防止子类对该方法修改(特列:子类也能定义跟该方法同名的方法,但是该方法必须被private修饰);final修饰变量时,该变量变成为常量,只能进行一次显示赋值。

                finally:作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示该语句块最终一定会被执行。(try/catch正常执行并且没有强制退出程序的情况下,finally语句块必然会被执行)

              finalize:finalize()是java.lang.Object里定义的方法,并且当该对象被回收的时候被调用。

        1.4 public final native Class<?> getClass;

                动态获取当前运行时,对象的Class对象。

        1.5 public native int hashCode;

                获取当前对象的hashCode的值,该值是在整数范围内[-2^31~2^31-1]。

                扩展:

                        1、每个对象的hashCode值在一个程序/系统中是具有唯一性。

                        2、若二个对象对用equals比较值是否相等,equals方法返回true,那么二个对象的hashCode返回的值一定相等,而该方法返回值为false,则hashCode返回的值不一定不相等。

        1.6 public final native void notify/notifyAll();

                 notify()方法随机唤起线程池中阻塞的线程,notifyAll()方法随机唤起线程池中所有阻塞的线程。(notify()和notifyAll()方法只能用在synchronized方法或者代码块中)

         1.7 private static native void registerNatives() ;

                  调用registerNatives()方法完成对该类本地方法的注册。

                  作用:

                        1、通过registerNatives()方法在类被加载的时主动将本地方法链接到调用方。

                        2、本地方法在程序运行中更新,也可以通过调用registerNative方法进行更新;

                        3、Java程序需要调用一个本地应用提供的方法时,因为虚拟机只会检索本地动态                               库,因而虚拟机是无法定位到本地方法实现的,这个时候就只能使用                                               registerNatives()方法进行主动链接。

                   参考:Object类中的registerNatives本地方法的作用_住手丶让我来的博客-CSDN博客

         1.8 public String toString(){ return getClass.getName() + "@" +                Integer.toHexString(hashCode()); }

                        toString()方法一般会被子类重写。

          1.9                            

         wait()/wait(int timeout, int nanos)方法基于wait(long timeout)实现,这些方法都只能再synchronized方法或者代码块中,其作用让该线程让出CPU,释放锁,进入阻塞状态。

参考:Object类有哪些方法 - 桃子不在 - 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值