博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4.Object有哪些公用方法?
阅读量:7024 次
发布时间:2019-06-28

本文共 1626 字,大约阅读时间需要 5 分钟。

hot3.png

Object有哪些公用方法?

1.clone方法

保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。

主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要在类中复写clone方法。

2.getClass方法

final方法,获得运行时类型。

3.toString方法

该方法用得比较多,一般子类都有覆盖。

4.finalize方法

该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。

5.equals方法

该方法是非常重要的一个方法。一般equals和==是不一样的,但是在Object中两者是一样的。子类一般都要重写这个方法。

6.hashCode方法

该方法用于哈希查找,可以减少在查找中使用equals的次数,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。

一般必须满足obj1.equals(obj2)==true。可以推出obj1.hashCode()==obj2.hashCode(),但是hashCode相等不一定就满足equals。不过为了提高效率,应该尽量使上面两个条件接近等价。

如果不重写hashCode(),在HashSet中添加两个equals的对象,会将两个对象都加入进去。

7.wait方法

wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。

调用该方法后当前线程进入睡眠状态,直到以下事件发生。

  • (1)其他线程调用了该对象的notify方法。

  • (2)其他线程调用了该对象的notifyAll方法。

  • (3)其他线程调用了interrupt中断该线程。

  • (4)时间间隔到了。

此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。

8.notify方法

该方法唤醒在该对象上等待的某个线程。

9.notifyAll方法

该方法唤醒在该对象上等待的所有线程。

源码

public class Object{    //公共构造函数    public Object();    //公共实例方法    public boolean equals(Object obj);    public native int hashCode();    public final native Class getClass();    public String toString();    public final native void notify();    public final native void notifyAll();    public final void wait() throws InterruptedException;    public final native void wait(long timeout) throws InterruptedException;     public final void wait(long timeout, int nanos) throws InterruptedException;     //保护实例方法    protected native Object clone();    protected void finalize() throws Throwable; }

转载于:https://my.oschina.net/u/997707/blog/804799

你可能感兴趣的文章
Java指定网页打开Chrome浏览器
查看>>
设计模式-简单工厂模式(Simple Factory)
查看>>
Microsoft Visual Studio 2013 Update 1 离线安装程序
查看>>
思科路由器限速设置全解
查看>>
IO流(三)_File类_字节流与字符流
查看>>
安全测试常用功能点
查看>>
varnish3.0清除缓存
查看>>
Bitnami-Redmine外网访问phpmyadmin设置
查看>>
iOS使用OpenAL播放PCM流
查看>>
Elm学习指南
查看>>
通读SDWebImage①--总体梳理、下载和缓存
查看>>
929. 独特的电子邮件地址
查看>>
19. Spring Boot Shiro 权限管理
查看>>
【C语言】14-返回指针的函数与指向函数的指针
查看>>
uoj#119. 【UR #8】决战圆锥曲线(线段树+复杂度分析)
查看>>
docker 13 dockerfile的保留字指令
查看>>
(转)开放window是服务器端口——以8080为例
查看>>
C# 通过IEnumberable接口和IEnumerator接口实现泛型和非泛型自定义集合类型foreach功能...
查看>>
微信小程序初识
查看>>
Ubuntu中打开RAR文件
查看>>