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

news2024/11/28 18:48:56

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

面试题

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 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1028367.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker Compose部署Mysql8

Docker Compose部署Mysql8 介绍 MySQL是一个广泛使用的开源关系型数据库管理系统,它被用于许多Web应用程序的数据存储和管理。MySQL提供了高性能、可靠性和灵活性,让开发者能够轻松处理各种规模的数据处理需求。 下面是一些关于MySQL的重要特点和功能…

CATTI考试,拿证必看篇:CATTI备考,你不可不知的东西都在这里!

打工人,打工魂,打工都是人上人。 在人才拥挤的就业市场里,我们如何能够脱颖而出,赢得一份好工作呢?于是很多人把目光投向了CATTI。 CATTI是一项面向全社会的职业资格考试,全称为全国翻译专业资格&#xff0…

ubuntu搭建sftp服务

安装OpenSSH服务器 Ubuntu通常已经预装了OpenSSH客户端,但如果您还没有OpenSSH服务器,请在终端中执行以下命令来安装: sudo apt update sudo apt install openssh-server 创建SFTP用户和组 创建一个新的用户组(例如 sftp_users&a…

【前端知识】Three 学习日志(一)—— Three.js 的简单尝试

Three 学习日志(一)—— Three.js 的简单尝试 Three.js是一个使用JavaScript编写的轻量级3D图形库,它可以在浏览器中渲染出3D场景。在学习Three.js的过程中,建立基本场景是一个重要的第一步。通过设置相机、场景和渲染器等组件&am…

ASP.NET区域LIS系统源码 SaaS模式B/S架构的LIS系统源码

区域LIS系统源码 SaaS模式B/S架构的LIS系统源码 区域LIS可促进基层医疗机构条码化检验业务管理,为基层搭建标本采集、标本核收、标本检验、室内质控、报告发布、统计分析的规范流程,同时为医疗机构提供检验诊断知识库提升检验业务水准。 技术架构&#x…

Ubantu 安装中文输入法

2、通过命令行安装搜狗输入法 sudo dpkg -i sogoupinyin_版本号_amd64.deb 注: 如果安装过程中提示缺少相关依赖,则执行如下命令解决: sudo apt -f install 3、注销计算机即可正常使用搜狗输入法 Ubuntu20.04安装搜狗输入法步骤 1、更…

Python 计算机二级知识点整理 模拟考试2

1. 2. 一个进程正在等待某一事件的发生而暂时停止执行时,在这种状态下,即使把CPU等资源分配给它,该进程也不能运行,即处于等待状态,又称为阻塞状态或封锁状态。 3. 4, 成功将一个元素退队就证明是之前循环…

Java命令行形式将程序打包成jar包,防止报错:没有主清单属性

1.编写java文件 新建空文件夹src, bin src文件夹下面新建文件 HelloWorld.java package com.ray;public class HelloWorld{public static void main(String[] args) {System.out.println("Hello!jar");} }2.javac编译文件到bin c:\tools\java1\src>javac -d .…

Matlab--高等应用数学问题的MATLAB求解

1.求解n阶导数 %% %如何求解n阶导数,用到diff(f,n) syms x; fsin(x)/(x^24*x3); diff(f,4) %% %如何求解100阶导数 tic,Fdiff(f,100);toc 2.Matlab语言的优越性 %% %MATLAB的优点: %MATLAB 语言的简洁高效性 %MATLAB 语言的科学运算功能 %MATLAB 语言的绘图功能 …

【新书推荐】大模型赛道如何实现华丽的弯道超车 —— 《分布式统一大数据虚拟文件系统 Alluxio原理、技术与实践》

文章目录 大模型赛道如何实现华丽的弯道超车 —— AI/ML训练赋能解决方案01 具备对海量小文件的频繁数据访问的 I/O 效率02 提高 GPU 利用率,降低成本并提高投资回报率03 支持各种存储系统的原生接口04 支持单云、混合云和多云部署01 通过数据抽象化统一数据孤岛02 …

简单介绍十款可以免费使用的API测试工具

API开发应该是后端开发最常见的工作,而调试和测试API是非常关键的,这篇文章简单介绍几款常用的工具以供大家参考。 SoapUI SoapUI是很老牌的工具的,在之前Webservice盛行的时候经常会用到。 现在官方推出了Pro版本的ReadyAPI,但要…

结合CRM 与项目管理,扩大你的业务和客户群

在当今的数字化时代,企业在很大程度上依赖技术来简化运营和确保增长。业务运营的两个重要组成部分是客户关系管理(CRM)和项目管理。虽然两者都是独立的学科,但它们有一个共同的目标:改进业务流程、提高客户满意度并推动…

一个简单好用安全的开源交互审计系统、轻量级堡垒机系统

一、开源项目简介 Next Terminal是一个简单好用安全的开源交互审计系统,支持RDP、SSH、VNC、Telnet、Kubernetes协议。 二、开源协议 使用AGPL-3.0开源协议 三、界面展示 四、功能概述 Next Terminal是一个轻量级堡垒机系统,支持RDP、SSH、VNC、Tel…

【校招VIP】产品基础知识之学习渠道

考点介绍: 产品经理是一项复合型的工作,需要学习掌握的知识很多,能否通过学习掌握并构建一套属于自己的产品知识体系,是成为一名优秀产品经理的重要条件。系统化学习方法,可以分为以下6个步骤: 1、明确的学…

Day66|图part5:130. 被围绕的区域、827.最大人工岛

130. 被围绕的区域 leetcode链接:题目链接 这题看起来很复杂,其实跟之前找飞地和找边缘地区的是差不多的,主要分三步: 使用dfs将边缘的岛都找出来,然后用A代替防止混淆;再用dfs找中间不与任何岛相连的飞地…

天软特色因子看板 (2023.09 第07期)

该因子看板跟踪天软特色因子A02002 (近一月尾盘成交占比(%)),该因子为近一个月尾盘成交量占比均值因子,用以刻画股票在收盘时,主力资金的流动影响。近一月尾盘成交占比(%)越小,表示多方或空方无力量。近一月尾盘成交占比(%)越大&a…

Qt5开发及实例V2.0-第一章Qt概述及Qt5的安装

Qt5开发及实例V2.0-第一章-Qt概述及Qt5的安装 第一章-Qt概述1.1 什么是Qt1.2 Qt 5的安装1.2.1 下载安装Qt 51.2.2 运行Qt 5 Creator1.2.3 Qt 5开发环境 1.3 Qt 5开发步骤及实例1.3.1 设计器Qt 5 Designer实现1.3.2 代码实现简单实例 L1.2 Qt 5安装:概念解析L1.3 Qt …

JS Set和Map数据结构

Set和Map数据结构 1. Set数据结构1.1 Set 增删改查1.1.1 add() 方法1.1.2 delete()1.1.3 has()1.1.4 clear()1.1.5 size 1.2 Set 遍历方法1.2.1 keys()1.2.2 values()1.2.3 entries()1.2.3 forEach() 2. Map数据类型2.1 Map 增删改查2.1.1 set()2.1.2 get()2.1.3 has()2.1.4 de…

【C++从0到王者】第三十一站:map与set

文章目录 一、关联式容器二、pair键值对三、set1. set的介绍2. set的部分接口以及应用3. count4. lower_bound和upper_bound5. equal_range6. multiset容器 四、map1. map的介绍2. map的一些常见接口以及使用3. map的[]运算符重载4. 使用map改进一些题5. multimap容器 五、map和…

Laravel框架 - IOC容器详解

IOC 容器代码 好了,说了这么多,下面要上一段容器的代码了. 下面这段代码不是laravel 的源码, 而是来自一本书《laravel 框架关键技术解析》. 这段代码很好的还原了laravel 的服务容器的核心思想. 代码有点长, 小伙伴们要耐心看. …