java基础类型讲解(Java的Object十二个常用方法)
Object作为所有类的老父亲,子类都会继承所有 Object 类中的 public 方法。
1.registerNatives
让程序主动将本地方法链接到调用方,当Java程序需要调用本地方法时就可以直接调用,而不需要虚拟机再去定位并链接。本地方法是指方法带有native关键字,底层使用c实现的。
2.getClassfinal方法,获得运行时类型class,class 对象就是描述对象所属类的对象。这个方法通常是和 Java 反射机制搭配使用的。效果与Object.class相同。
3.hashCode用来返回其所在对象的物理地址(哈希码值),常会和equals方法同时重写,确保相等的两个对象拥有相等的hashCode。详情可以看我前面的帖子,hashcode与equals的区别联系
4.equals用于比较两个对象,如果这两个对象引用指向的是同一个对象,那么返回 true,否则返回 false。该方法在没有被重写的时候就是比较引用地址,和‘==’一样,但是子类一般都要重写这个方法。会配合hashcode。
5.clone该方法是保护方法,默认实现对象的浅复制,只有实现了 Cloneable 接口才可以调用该方法,否则抛出CloneNotSupportedException 异常。默认的 clone 方法是浅拷贝。所谓浅拷贝,指的是对象内属性引用的对象只会拷贝引用地址,而不会将引用的对象重新分配内存。深拷贝则是会连引用的对象也重新创建。详情可以看我前面写的Java深拷贝和浅拷贝的区别是什么?
6.toString返回一个 String ,一般子类可以重写来展示自己需要的信息。默认返回: class 名称 @ hashCode 的十六进制字符串。
7.wait导致线程进入等待状态,直到它被其他线程通过notify()或者notifyAll唤醒。该方法只能在同步方法中调用。这里wait与sleep方法不同,sleep方法只是停止当前进程,但是不会释放当前的锁,而wait会把当前的锁也释放。详情:Object.wait()/notify()/notifyAll()详解
8.wait(long millis)这里的参数是毫秒,也就是等待长达n毫秒,如果没有通知就超时返回。在等待时间过去后就直接重新获取锁,往后执行;但是在竞争条件下,都会等获取到锁了才可以往下执行。
9.void wait(long millis,int nanos)导致线程进入等待状态,对于等待时间更细粒度的控制,可以达到毫秒。在等待时间过去后就直接重新获取锁,往后执行;但是在竞争条件下,都会等获取到锁了才可以往下执行
10.notifyfinal方法,随机选择一个在该对象上调用wait方法的线程,解除其阻塞状态。该方法只能在同步方法或同步块内部调用。
11.notifyAll解除所有那些在该对象上调用wait方法的线程的阻塞状态。该方法只能在同步方法或同步块内部调用。
12.finalize是保护方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。如果我们实现了这个方法,对象可能在这个方法中再次复活,从而避免被 GC 回收。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com