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博客

相关推荐
weedsfly2 分钟前
前端开发中的代理模式——从 Vue 3 响应式到日常开发
前端·javascript·面试
咖啡八杯14 分钟前
GoF设计模式——状态模式
java·面试·架构
尘世中一位迷途小书童35 分钟前
Cesium 涟漪扩散点:自定义材质,参数调对了才好看
前端·面试
zzz_23681 小时前
【Java实习面试算法冲刺】图论
java·算法·面试
Sam_Deep_Thinking2 小时前
一次线程池线上故障复盘:四层防线如何避免数据丢失
java·面试·程序员
Lhappy嘻嘻2 小时前
网络(二)|Java Socket 编程全实战:UDP 回显 / 词典服务器、TCP 单线程→多线程线程池演进
java·开发语言·网络·学习·面试·udp·tcp
胡萝卜术10 小时前
从API调用到手写LRU:力扣146「LRU缓存」的哈希表+双向链表终极进化之路
前端·javascript·面试
ffqws_11 小时前
Redis 分布式锁:基于 Redisson 的实现与面试高频问答
redis·分布式·面试
怪兽学LLM17 小时前
LeetCode 105. 从前序与中序遍历序列构造二叉树:分治递归思路详解
算法·leetcode·职场和发展
QQ骞18 小时前
【ECU-HIL 嵌入式车载软件测试学习路线和面试描述方式(1)】
学习·面试·职场和发展