• 说说Object类下面有几种方法呢?


    今天说一道基础题型,不过很多人会忽略或者至少说不完整,但是面试时被问到的几率还是很大的。

    面试题

    Object有几种方法呢?

    Java语言是一种单继承结构语言,Java中所有的类都有一个共同的祖先。这个祖先就是Object类。

    如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。

    Object的方法我们在平时基本都会用到,但如果没有准备被忽然这么一问,还是有点懵圈的。

    分析

    Object类是Java中所有类的基类。位于java.lang包中,一共有13个方法。如下图:

    alt

    具体解答

    1.Object()

    这个没什么可说的,Object类的构造方法。(非重点)

    2.registerNatives()

    为了使JVM发现本机功能,他们被一定的方式命名。例如,对于java.lang.Object.registerNatives,对应的C函数命名为Java_java_lang_Object_registerNatives。

    通过使用registerNatives(或者更确切地说,JNI函数RegisterNatives),可以命名任何你想要你的C函数。(非重点)

    3.clone()

    clone()函数的用途是用来另存一个当前存在的对象。只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。(注意:回答这里时可能会引出设计模式的提问)

    4.getClass()

    final方法,用于获得运行时的类型。该方法返回的是此Object对象的类对象/运行时类对象Class。效果与Object.class相同。(注意:回答这里时可能会引出类加载,反射等知识点的提问)

    5.equals()

    equals用来比较两个对象的内容是否相等。默认情况下(继承自Object类),equals和==是一样的,除非被覆写(override)了。(注意:这里可能引出更常问的“equals与==的区别”及hashmap实现原理的提问)

    6.hashCode()

    该方法用来返回其所在对象的物理地址(哈希码值),常会和equals方法同时重写,确保相等的两个对象拥有相等的hashCode。(同样,可能引出hashmap实现原理的提问)

    7.toString()

    toString()方法返回该对象的字符串表示,这个方法没什么可说的。

    8.wait()

    导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。(引出线程通信及“wait和sleep的区别”的提问)

    9.wait(long timeout)

    导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。(引出线程通信及“wait和sleep的区别”的提问)

    10.wait(long timeout, int nanos)

    导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。(引出线程通信及“wait和sleep的区别”的提问)

    11.notify()

    唤醒在此对象监视器上等待的单个线程。(引出线程通信的提问)

    12. notifyAll()

    唤醒在此对象监视器上等待的所有线程。(引出线程通信的提问)

    13.finalize()

    当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。(非重点,但小心引出垃圾回收的提问)

    引申常见问题

    • equals() 与 == 的区别是什么?

    • hashCode() 和 equals() 之间有什么联系?

    • wait()方法与sleep()方法的区别

    • 为什么重写了equals就必须重写hashCode

    • HashMap的实现原理

    • 谈谈类加载机制

    后续我们就这些常见问题一一做一些解答,当然,可能大部分人对这类问了八百遍的问题已经倒背如流了

    顶尖架构师栈

    关注回复关键字

    【C01】超10G后端学习面试资源

    【IDEA】最新IDEA激活工具和码及教程

    【JetBrains软件名】 最新软件激活工具和码及教程

    工具&码&教程

    转载于:https://mp.weixin.qq.com/s/_rzg2H1f8_NsvyXf3zGbmg

    本文由 mdnice 多平台发布

  • 相关阅读:
    大一学生《Web编程基础》期末网页制作 基于HTML+CSS+JavaScript响应式个人主页相册介绍模板
    打印整数二进制的奇数位和偶数位
    【26-业务开发-基础业务-品牌管理-图片管理-上传图片功能实现-基于阿里云OSS服务-解决跨域问题-设置跨域规则-修改ACL权限为公共读】
    Python最新学习路线
    区块链溯源相比传统追溯有什么优点?
    Linux 命令行——网络系统、ping、netstat、ftp、wget、ssh
    java 实现事件监听EventListener的方式详解及分析
    链表合并(暑假每日一题 3)
    【大数据】Flink SQL 语法篇(四):Group 聚合、Over 聚合
    算法打卡_第一天:顺序查找+直接插入排序
  • 原文地址:https://blog.csdn.net/Dc253061007/article/details/133088852