前言

Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的“老祖宗”。Java 中所有的类都有一个共同的祖先 Object 类,子类都会继承所有 Object 类中的 public 方法。

先看下 Object 的类结构(快捷键:alt+7):

1. getClass 方法public final native Class> getClass();

final 方法、获取对象的运行时 class 对象,class 对象就是描述对象所属类的对象。这个方法通常是和 Java 反射机制搭配使用的。

2. hashCode 方法public native int hashCode();

该方法主要用于获取对象的散列值。Object 中该方法默认返回的是对象的堆内存地址。

3. equals 方法public boolean equals(Object obj) {        return (this == obj);}

该方法用于比较两个对象,如果这两个对象引用指向的是同一个对象,那么返回 true,否则返回 false。一般 equals 和 == 是不一样的,但是在 Object 中两者是一样的。子类一般都要重写这个方法。

4. clone 方法protected native Object clone() throws CloneNotSupportedException;

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

默认的 clone 方法是浅拷贝。所谓浅拷贝,指的是对象内属性引用的对象只会拷贝引用地址,而不会将引用的对象重新分配内存。深拷贝则是会连引用的对象也重新创建。

5. toString 方法public String toString() {

return getClass().getName() + "@" + Integer.toHexString(hashCode());

}

返回一个 String 对象,一般子类都有覆盖。默认返回格式如下:对象的 class 名称 + @ + hashCode 的十六进制字符串。

6. notify 方法public final native void notify();

final 方法,主要用于唤醒在该对象上等待的某个线程。

7. notifyAll 方法public final native void notifyAll();

final 方法,主要用于唤醒在该对象上等待的所有线程。

8. wait(long timeout) 方法public final native void wait(long timeout) throws InterruptedException;

wait 方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait() 方法一直等待,直到获得锁或者被中断。wait(long timeout) 设定一个超时间隔,如果在规定时间内没有获得锁就返回。欢迎大家关注我的公种浩【程序员追风】,文章都会在里面更新,整理的资料也会放在里面。

9. wait(long timeout, int nanos) 方法public final void wait(long timeout, int nanos) throws InterruptedException {

if (timeout

throw new IllegalArgumentException("timeout value is negative");

}

if (nanos  999999) {

throw new IllegalArgumentException(

"nanosecond timeout value out of range");

}

if (nanos >= 500000 || (nanos != 0 && timeout == 0)) {

timeout++;

}

wait(timeout);

}

参数说明

timeout:最大等待时间(毫秒)

nanos:附加时间在毫秒范围(0-999999)

该方法导致当前线程等待,直到其他线程调用此对象的 notify() 方法或notifyAll()方法,或在指定已经过去的时间。此方法类似于 wait 方法的一个参数,但它允许更好地控制的时间等待一个通知放弃之前的量。实时量,以毫微秒计算,计算公式如下:1000000 * timeout + nanos

在所有其他方面,这种方法与 wait(long timeout) 做同样的事情。特别是 wait(0, 0) 表示和 wait(0) 相同。

10. wait 方法public final void wait() throws InterruptedException {  wait(0);}

可以看到 wait() 方法实际上调用的是 wait(long timeout) 方法,只不过 timeout 为 0,即不等待。

11. finalize 方法protected void finalize() throws Throwable { }

该方法是保护方法,主要用于在 GC 的时候再次被调用,如果我们实现了这个方法,对象可能在这个方法中再次复活,从而避免被 GC 回收。

最后

欢迎大家一起交流,喜欢文章记得点个赞哟,感谢支持!

java object 方法_Java中Object类常用的12个方法,你用过几个?相关推荐

  1. java math 函数_Java中Math类常用函数总结

    Java中比较常用的几个数学公式的总结: //取整,返回小于目标函数的最大整数,如下将会返回-2 Math.floor(-1.8): //取整,返回发育目标数的最小整数 Math.ceil() //四 ...

  2. java中math的方法_Java中Math类常用方法代码详解

    近期用到四舍五入想到以前整理了一点,就顺便重新整理好经常见到的一些四舍五入,后续遇到常用也会直接在这篇文章更新... public class Demo{ public static void mai ...

  3. java 通用对象_java中对所有对象都通用的方法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 覆盖equals时请遵守通用约定 我们知道equals要实现的是逻辑上的相等.站在数学的角度来看,两个事物相等的条件,有如下几个: 1.自反性:对于任何非 ...

  4. java properties 参数_Java中Properties 类的详细使用

    我把你的头像,设置成我的名字,此刻你便与我同在. 我把你的名字,写进我的代码里面,以后,我的世界便存在着你. 一.Properties 类 Properties 类位于 java.util.Prope ...

  5. java file构造方法_Java中FileOutputStream类的常用方法

    今天动力节点java学院小编将为大家分享Java中FileOutputStream类的常用方法,希望通过此文能够帮助到大家,下面就随小编一起看看Java中FileOutputStream类的常用方法都 ...

  6. java堆栈异常_Java中获得异常堆栈使用轨迹的方法是。

    Java中获得异常堆栈使用轨迹的方法是. 答:fillinStack() 中国大学MOOC: 互联网金融品牌建设能增加客户对企业的依赖度,促使客户重复使用某个企业产品或服务,从而产生一定的客户黏性 答 ...

  7. java 当月最后一天_java中取得当月最后一天的四种方法

    java中取得当月最后一天的四种方法 第一种,使用Calendar的roll方法,在限制某个日期字段不改变的形式下,改变其他日期字段的值. 第二种,使用Calendar的getActualMaximu ...

  8. java里break的使用方法_java中break,continue,return使用方法

    break , continue 和 return 的使用方法: 1.break 的作用 a. 跳出当前循环: b. 但是如果是嵌套循环,则只能跳出当前的这一层循环,只有逐层break才能跳出所有循环 ...

  9. java中string的方法_java中String类中的常用方法

    @Test public void testToString2() {  /**   * 他会调用toString方法 他调用的其实是Object类中的toString方法 引用会隐式调用toStri ...

最新文章

  1. 虚拟机的操作系统的安装
  2. DRP问题集结(一)-Tomcat无法启动,报错java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory...
  3. java io nio aio_Java IO、NIO、AIO知识总结
  4. 线段树的数组大小下限及证明
  5. (GitHub标星6.9k)超详细的人工智能专家路线图,
  6. 十五、中文词向量训练二
  7. DWR的使用以及DWR中工具JS文件的使用
  8. python进阶(十七)正则json(上)
  9. 七步从AngularJS菜鸟到专家(6):服务
  10. 软件先行的英特尔,为开发者们带来了什么?
  11. [Python学习笔记][第八章Python异常处理结构与程序调试]
  12. C++中对string对象的初始化及赋值方式总结
  13. 新中大银色快车数据恢复
  14. 硬件开发过程简介(一)
  15. 东北人讲java_东北人,请你讲东北话(内附东北话速成)
  16. torch.cuda
  17. 吴裕雄--天生自然 诗经:声声慢·寻寻觅觅
  18. 今日学习在线编程题:竹鼠的白色季节
  19. 2021-05-24 BUG修改
  20. 宏颜获水: 百度ceo 李彦宏惨槽泼水,懵了!

热门文章

  1. 车载以太网 - SomeIP - 初识 - 01
  2. Wscript.shell对象参考手册
  3. php在线支付之支付宝
  4. 收据html_香港专业教育学院得到了收据
  5. 罗斯蒙特3051系列CG和GP产品的区别
  6. unityUI插件整理
  7. Kotlin 高阶函数
  8. 一文理清区块链里那些容易混淆的概念
  9. 如何在腾讯云服务器上安装安全狗提高网站安全解决方法总结
  10. 如何使用模拟量转485模块