java八股文面试[java基础]——Object类有哪些方法

通过IDEA打开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方法

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

(10)registerNatives

Java程序要想调用本地方法,需要执行两个步骤:

第一,通过System.loadLibrary()将包含本地方法实现的动态文件加载进内存;

第二,当Java程序需要调用本地方法时,虚拟机在加载的动态文件中定位并链接该本地方法,从而得以执行本地方法。

registerNatives()方法的作用就是取代第二步,让程序主动将本地方法链接到调用方 ,当Java程序需要调用本地方法时就可以直接调用,而不需要虚拟机再去定位并链接。

知识速记:类 克隆 打印 释放 本地 哈希(2个) 线程(4个)

知识参考:

Object类的常用方法_object类的方法_贤云Ye鹤的博客-CSDN博客Java基础 -- java 类中registerNatives()方法的作用是什么_小明同学~~的博客-CSDN博客

相关推荐
GSDjisidi8 小时前
东京IT软件会社-(株)GSD|多种技术栈募集,高度人才+20分
开发语言·面试·职场和发展
xhxxx10 小时前
不用 Set,只用两个布尔值:如何用标志位将矩阵置零的空间复杂度压到 O(1)
javascript·算法·面试
有意义10 小时前
斐波那契数列:从递归到优化的完整指南
javascript·算法·面试
用户479492835691511 小时前
面试官最爱挖的坑:用户 Token 到底该存哪?
前端·javascript·面试
Heo11 小时前
Vue3.4中diff算法核心梳理
前端·javascript·面试
齐生111 小时前
iOS 知识点 - ARC / 引用计数 / SideTable / weak 表
笔记·面试
用户479492835691512 小时前
XSS、CSRF、CSP、HttpOnly 全扫盲:前端安全不只是后端的事
前端·后端·面试
镜花水月linyi13 小时前
Java 线程创建的完整链路:从 Java 层 → JVM 层 → 操作系统层
java·后端·面试
萌>__<新14 小时前
力扣打卡每日一题————零钱兑换
算法·leetcode·职场和发展
重生之后端学习14 小时前
238. 除自身以外数组的乘积
java·数据结构·算法·leetcode·职场和发展·哈希算法