ITPub博客

首页 > 应用开发 > > Object类的方法有哪些?

Object类的方法有哪些?

作者:pengjs991111 时间:2019-11-11 15:13:23 0 删除 编辑

1.getClass()方法

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

2.hashCode()方法

hashCode()方法主要用于hash表,比如HashMap,当集合要添加元素时,大致按如下步骤:

1.先调用该元素的hashCode()方法,直接定位到它应该放置的物理位置上

2.如果这个位置上没有元素,就直接存储在这个位置上

3.如果这个位置上已经有元素,就调用equals()方法进行比较,相同的话就更新,不相同就使用上述解决碰撞的方法存储新元素

所以重写equals()方法时,也必须重写hashCode()方法。如果不这样做,就会违反Object.hashCode()的规范,导致无法结合所有基于hash的集合一起正常运作,这样的集合包括HashMap、HashSet和Hashtable

那为什么不直接使用equals()进行操作呢?如果只使用equals(),意味着需要迭代整个集合进行比较操作,如果集合中有1万个元素,就需要进行1万次比较,这明显不可行

3.equals(obj)方法

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

4.clone()方法

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

5.toString()方法

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

6.notify()方法

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

7.notifyAll()方法

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

8.wait()方法

wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。

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

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

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

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

(4)时间间隔到了。

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

9 . wait(long)方法

wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。

10 wait(long ,int)方法

在纳秒级别进行更精细的等待控制,一般用不到。


11.finalize方法

该方法用于释放资源。因为无法确定该方法什么时候被调用。如果你想使用这个方法,百度一下相关的内容,然后不要使用它

wait,notify,notifyAll就是线程之间用来通信的工具

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/623/viewspace-3126089/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    221
  • 访问量
    785