Sign in
Sign up
Explore
Enterprise
Education
Search
Help
Terms of use
About Us
Explore
Enterprise
Education
Gitee Premium
Gitee AI
AI teammates
Sign in
Sign up
Fetch the repository succeeded.
Watch
Unwatch
Watching
Releases Only
Ignoring
3
Star
48
Fork
24
DreamCoders
/
CoderGuide
Code
Issues
1169
Pull Requests
0
Wiki
Insights
Pipelines
Service
JavaDoc
PHPDoc
Quality Analysis
Jenkins for Gitee
Tencent CloudBase
Tencent Cloud Serverless
悬镜安全
Aliyun SAE
Codeblitz
SBOM
DevLens
Don’t show this again
Update failed. Please try again later!
Remove this flag
Content Risk Flag
This task is identified by
as the content contains sensitive information such as code security bugs, privacy leaks, etc., so it is only accessible to contributors of this repository.
说说Object类下面有几种方法呢?
Backlog
#IAJKPF
陌生人
owner
Opened this issue
2024-08-13 10:04
<p style="text-align: start;">这是一道基础题型,不过很多人会忽略或者至少说不完整,但是面试时被问到的几率还是很大的。</p><h2 style="text-align: start;"><span style="color: inherit;">面试题</span></h2><p style="text-align: start;">Object有几种方法呢?</p><blockquote style="text-align: start;">Java语言是一种单继承结构语言,Java中所有的类都有一个共同的祖先。这个祖先就是Object类。如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。Object的方法我们在平时基本都会用到,但如果没有准备被忽然这么一问,还是有点懵圈的。</blockquote><h2 style="text-align: start;"><span style="color: inherit;">分析</span></h2><p style="text-align: start;">Object类是Java中所有类的基类。位于java.lang包中,一共有13个方法。如下图:</p><p style="text-align: center;"><img src="https://jsd.onmicrosoft.cn/gh/iGaoWei/codercdn@master/question/20240627/2024062710570845076.png" alt="https://jsd.onmicrosoft.cn/gh/iGaoWei/codercdn@master/question/20240627/2024062710570845076.png" data-href="" style=""></p><h2 style="text-align: start;"><span style="color: inherit;">具体解答</span><br></h2><h3 style="text-align: start;"><span style="color: inherit;">1.Object()</span></h3><p style="text-align: start;">这个没什么可说的,Object类的构造方法。<span style="color: rgb(255, 0, 0);">(非重点)</span></p><h3 style="text-align: start;"><span style="color: inherit;">2.registerNatives()</span></h3><p style="text-align: start;">为了使JVM发现本机功能,他们被一定的方式命名。例如,对于java.lang.Object.registerNatives,对应的C函数命名为Java_java_lang_Object_registerNatives。</p><p style="text-align: start;">通过使用registerNatives(或者更确切地说,JNI函数RegisterNatives),可以命名任何你想要你的C函数。<span style="color: rgb(255, 0, 0);">(非重点)</span></p><h3 style="text-align: start;"><span style="color: inherit;">3.clone()</span></h3><p style="text-align: start;">clone()函数的用途是用来另存一个当前存在的对象。只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。<span style="color: rgb(255, 0, 0);">(注意:回答这里时可能会引出设计模式的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">4.getClass()</span></h3><p style="text-align: start;">final方法,用于获得运行时的类型。该方法返回的是此Object对象的类对象/运行时类对象Class。效果与Object.class相同。<span style="color: rgb(255, 0, 0);">(注意:回答这里时可能会引出类加载,反射等知识点的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">5.equals()</span></h3><p style="text-align: start;">equals用来比较两个对象的内容是否相等。默认情况下(继承自Object类),equals和==是一样的,除非被覆写(override)了。<span style="color: rgb(255, 0, 0);">(注意:这里可能引出更常问的“equals与==的区别”及hashmap实现原理的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">6.hashCode()</span></h3><p style="text-align: start;">该方法用来返回其所在对象的物理地址(哈希码值),常会和equals方法同时重写,确保相等的两个对象拥有相等的hashCode。<span style="color: rgb(255, 0, 0);">(同样,可能引出hashmap实现原理的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">7.toString()</span></h3><p style="text-align: start;">toString()方法返回该对象的字符串表示,这个方法没什么可说的。</p><h3 style="text-align: start;"><span style="color: inherit;">8.wait()</span></h3><p style="text-align: start;">导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。<span style="color: rgb(255, 0, 0);">(引出线程通信及“wait和sleep的区别”的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">9.wait(long timeout)</span></h3><p style="text-align: start;">导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。<span style="color: rgb(255, 0, 0);">(引出线程通信及“wait和sleep的区别”的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">10.wait(long timeout, int nanos)</span></h3><p style="text-align: start;">导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。<span style="color: rgb(255, 0, 0);">(引出线程通信及“wait和sleep的区别”的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">11.notify()</span></h3><p style="text-align: start;">唤醒在此对象监视器上等待的单个线程。<span style="color: rgb(255, 0, 0);">(引出线程通信的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">12. notifyAll()</span></h3><p style="text-align: start;">唤醒在此对象监视器上等待的所有线程。<span style="color: rgb(255, 0, 0);">(引出线程通信的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">13.finalize()</span></h3><p style="text-align: start;">当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。<span style="color: rgb(255, 0, 0);">(非重点,但小心引出垃圾回收的提问)</span></p><h2 style="text-align: start;"><span style="color: inherit;">引申常见问题</span></h2><ul><li style="text-align: justify;">equals() 与 == 的区别是什么?</li><li style="text-align: justify;">hashCode() 和 equals() 之间有什么联系?</li><li style="text-align: justify;">wait()方法与sleep()方法的区别</li><li style="text-align: justify;">为什么重写了equals就必须重写hashCode</li><li style="text-align: justify;">HashMap的实现原理</li><li style="text-align: justify;">谈谈类加载机制</li></ul><p style="text-align: start;">后续我们就这些常见问题一一做一些解答,当然,可能大部分人对这类问了八百遍的问题已经倒背如流了</p>
<p style="text-align: start;">这是一道基础题型,不过很多人会忽略或者至少说不完整,但是面试时被问到的几率还是很大的。</p><h2 style="text-align: start;"><span style="color: inherit;">面试题</span></h2><p style="text-align: start;">Object有几种方法呢?</p><blockquote style="text-align: start;">Java语言是一种单继承结构语言,Java中所有的类都有一个共同的祖先。这个祖先就是Object类。如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。Object的方法我们在平时基本都会用到,但如果没有准备被忽然这么一问,还是有点懵圈的。</blockquote><h2 style="text-align: start;"><span style="color: inherit;">分析</span></h2><p style="text-align: start;">Object类是Java中所有类的基类。位于java.lang包中,一共有13个方法。如下图:</p><p style="text-align: center;"><img src="https://jsd.onmicrosoft.cn/gh/iGaoWei/codercdn@master/question/20240627/2024062710570845076.png" alt="https://jsd.onmicrosoft.cn/gh/iGaoWei/codercdn@master/question/20240627/2024062710570845076.png" data-href="" style=""></p><h2 style="text-align: start;"><span style="color: inherit;">具体解答</span><br></h2><h3 style="text-align: start;"><span style="color: inherit;">1.Object()</span></h3><p style="text-align: start;">这个没什么可说的,Object类的构造方法。<span style="color: rgb(255, 0, 0);">(非重点)</span></p><h3 style="text-align: start;"><span style="color: inherit;">2.registerNatives()</span></h3><p style="text-align: start;">为了使JVM发现本机功能,他们被一定的方式命名。例如,对于java.lang.Object.registerNatives,对应的C函数命名为Java_java_lang_Object_registerNatives。</p><p style="text-align: start;">通过使用registerNatives(或者更确切地说,JNI函数RegisterNatives),可以命名任何你想要你的C函数。<span style="color: rgb(255, 0, 0);">(非重点)</span></p><h3 style="text-align: start;"><span style="color: inherit;">3.clone()</span></h3><p style="text-align: start;">clone()函数的用途是用来另存一个当前存在的对象。只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。<span style="color: rgb(255, 0, 0);">(注意:回答这里时可能会引出设计模式的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">4.getClass()</span></h3><p style="text-align: start;">final方法,用于获得运行时的类型。该方法返回的是此Object对象的类对象/运行时类对象Class。效果与Object.class相同。<span style="color: rgb(255, 0, 0);">(注意:回答这里时可能会引出类加载,反射等知识点的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">5.equals()</span></h3><p style="text-align: start;">equals用来比较两个对象的内容是否相等。默认情况下(继承自Object类),equals和==是一样的,除非被覆写(override)了。<span style="color: rgb(255, 0, 0);">(注意:这里可能引出更常问的“equals与==的区别”及hashmap实现原理的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">6.hashCode()</span></h3><p style="text-align: start;">该方法用来返回其所在对象的物理地址(哈希码值),常会和equals方法同时重写,确保相等的两个对象拥有相等的hashCode。<span style="color: rgb(255, 0, 0);">(同样,可能引出hashmap实现原理的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">7.toString()</span></h3><p style="text-align: start;">toString()方法返回该对象的字符串表示,这个方法没什么可说的。</p><h3 style="text-align: start;"><span style="color: inherit;">8.wait()</span></h3><p style="text-align: start;">导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。<span style="color: rgb(255, 0, 0);">(引出线程通信及“wait和sleep的区别”的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">9.wait(long timeout)</span></h3><p style="text-align: start;">导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。<span style="color: rgb(255, 0, 0);">(引出线程通信及“wait和sleep的区别”的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">10.wait(long timeout, int nanos)</span></h3><p style="text-align: start;">导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。<span style="color: rgb(255, 0, 0);">(引出线程通信及“wait和sleep的区别”的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">11.notify()</span></h3><p style="text-align: start;">唤醒在此对象监视器上等待的单个线程。<span style="color: rgb(255, 0, 0);">(引出线程通信的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">12. notifyAll()</span></h3><p style="text-align: start;">唤醒在此对象监视器上等待的所有线程。<span style="color: rgb(255, 0, 0);">(引出线程通信的提问)</span></p><h3 style="text-align: start;"><span style="color: inherit;">13.finalize()</span></h3><p style="text-align: start;">当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。<span style="color: rgb(255, 0, 0);">(非重点,但小心引出垃圾回收的提问)</span></p><h2 style="text-align: start;"><span style="color: inherit;">引申常见问题</span></h2><ul><li style="text-align: justify;">equals() 与 == 的区别是什么?</li><li style="text-align: justify;">hashCode() 和 equals() 之间有什么联系?</li><li style="text-align: justify;">wait()方法与sleep()方法的区别</li><li style="text-align: justify;">为什么重写了equals就必须重写hashCode</li><li style="text-align: justify;">HashMap的实现原理</li><li style="text-align: justify;">谈谈类加载机制</li></ul><p style="text-align: start;">后续我们就这些常见问题一一做一些解答,当然,可能大部分人对这类问了八百遍的问题已经倒背如流了</p>
Comments (
0
)
Sign in
to comment
Status
Backlog
Backlog
Doing
Done
Closed
Assignees
Not set
Labels
Java
Not set
Label settings
Milestones
No related milestones
No related milestones
Pull Requests
None yet
None yet
Successfully merging a pull request will close this issue.
Branches
No related branch
Branches (
-
)
Tags (
-
)
Planed to start   -   Planed to end
-
Top level
Not Top
Top Level: High
Top Level: Medium
Top Level: Low
Priority
Not specified
Serious
Main
Secondary
Unimportant
参与者(1)
1
https://gitee.com/DreamCoders/CoderGuide.git
git@gitee.com:DreamCoders/CoderGuide.git
DreamCoders
CoderGuide
CoderGuide
Going to Help Center
Search
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
Repository Report
Back to the top
Login prompt
This operation requires login to the code cloud account. Please log in before operating.
Go to login
No account. Register