Java Object类方法介绍

news/2024/7/22 12:51:23/文章来源:https://blog.csdn.net/qq_63635872/article/details/139272232
Object作为顶级类,所有的类都实现了该类的方法,包括数组。
查询Java文档:

1、object.eauqls():

其作用与 == 有些类似。
==:
是一个比较运算符,而不是一个方法。
①可以判断基本类型,也可以判断引用类型。
②若判断基本数据类型,则判断他们的值是否相同。
③若判断引用类型,则判断他们的地址是否相同,即判断他们是不是同一个对象。
④只要有基本数据类型,那么就是判断值是否相等。
equals:
是object类中的方法,不是运算符,只能判断引用类型。
①默认判断地址是否相同。
②子类往往都会将其重写,用来判断对应内容是否相等。
例:
这是Object中equals的源码:
Integer类将equals()改写为:
例:用== 和equals()来判断两个Integer对象是否相等:
Integer i1 = new Integer(1000);
Integer i2 = new Integer(1000);
i1 == i2;     //false  因为==判断引用类型时,判断他们地址是否相同
i1.equals(i2);//true   而Integer对equals()方法进行重写,所以是判断两个对象的值是否相等,因此正确。

2、hashCode():

1、提高具有哈希结构的容器的效率。
2、两个引用,如果指向的是同一个对象,则哈希值是一样的。
3、两个引用,如果指向的是不同的对象,则哈希值是不一样的。
4、哈希值主要是根据地址号来的,但是不能完全将哈希值等价于地址。
5、Object的hashcode 方法是本地方法,也就是用 c 或 c++ 实现的,该方法直接返回对象的内存地址。
详情: java Object的hashCode

3、toString():

1、默认返回:
全类名(包名+类名) + @ + 哈希值的十六进制。
源码:
2、子类往往会重写该方法,用来输出对象的属性信息。
3、重写该方法后,打印或拼接对象时,都会自动调用该对象的toString()方法。
4、直接输出一个对象时,toString()方法会被默认调用

4、finalize():

当垃圾回收器确定不存在该对象的更多引用时,由垃圾回收器自动调用此方法。
1、当对象被回收时,系统自动调用该对象的finalize()方法。子类可以重写该方法,做一些释放资源的操作。
2、什么时候对象会被回收:
当一个对象没有任何引用时,jvm就认为该对象是一个垃圾对象,就会使用垃圾回收机制销毁该对象,
在销毁该对象前,会先调用finalize()方法。
3、若不重写该方法,则在销毁某个对象前,会自动调用object的finalize()方法,即什么也不做。
4、并不是一个对象没有引用之后立刻就会被回收:
如果一个对象一旦没有引用,就立刻被回收,意味着垃圾回收器会时时刻刻监控,这样浪费资源,效率低。
垃圾回收器有一个自己的算法,会根据算法来回收。
5、也可以通过System.gc()主动触发垃圾回收机制。
System.gc():作用为立即运行垃圾回收器。
且垃圾回收器调用过程中,不会阻塞程序,程序会继续向后运行。

5、clone():

实现clone()的两种方式:
a.在java语言中,如果需要实现深克隆,可以通过覆盖Object类的clone()方法实现,也可以通过序列化的方式来实现。
b.如果引用类型里面还包含很多引用类型,或者内层引用类型的类里面又包含引用类型,使用clone方法就会很麻烦。
这时我们可以用序列化的方式来实现对象的深克隆。
object规范中clone的约定:(不是绝对的要求,只是一个实现clone方法时应该遵守的规范标准)
x.clone() != x 返回 true;                即二者不是同一个对象,地址不同
x.clone().getClass() == x.getClass() 返回 true;                即二者属于同一个类
x.clone.equals(x) 返回 true,自定义对象应重写equals方法。            即二者通过equals()判断相同,也就是值相同
按照约定, 克隆对象与原对象地址地址不同,所属 同一个类,两个对象 对应实例各字段的值相同,即克隆的对象不依赖于原对象,也就是 深拷贝
按照约定,clone返回的对象应该通过 super.clone() 获得。
默认使用父类clone()方法的缺陷:
如果克隆对象中包含的域引用了可变的对象,上述这种简单的 clone 实现可能会导致灾难性的后果。
因为默认clone()是浅克隆,如下图,school类中有两个属性:
分别为String类型和Student[]类型
使用clone克隆一份school1给school2
可见,所有的引用数据类型,String类型的name中的value值,Student[]类型的数组
的值都是一样的,也就是说指向同一个地方。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于深度学习的中文情感分析系统python flask

基于python的毕业设计 基于深度学习的中文情感分析系统(flask)(源码说明文档演示) 毕业设计课程设计期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目…

Mysql 找出未提交事务的SQL及死锁

未提交事务: 通过查看information_schema.INNODB_TRX视图,您可以了解当前系统中正在运行的事务情况,从而进行问题排查和性能优化。 SELECT * FROM information_schema.innodb_trx; 通过trx_state为RUNNIG,trx_started判断是否有一直RUNNING的事务。 如果有未提交…

SelfKG论文翻译

SelfKG: Self-Supervised Entity Alignment in Knowledge Graphs SelfKG:知识图中的自监督实体对齐 ABSTRACT 实体对齐旨在识别不同知识图谱(KG)中的等效实体,是构建网络规模知识图谱的基本问题。在其发展过程中,标…

关于 Spring 是什么

Spring 是什么 我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级的…

如何在 Elasticsearch 中选择精确 kNN 搜索和近似 kNN 搜索

作者:来自 Elastic Carlos Delgado kNN 是什么? 语义搜索(semantic search)是相关性排名的强大工具。 它使你不仅可以使用关键字,还可以考虑文档和查询的实际含义。 语义搜索基于向量搜索(vector search&…

配置旁挂二层组网直接转发示例(命令行)

业务需求 企业用户通过WLAN接入网络,以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时,不影响用户的业务使用。 组网需求 AC组网方式:旁挂二层组网。DHCP部署方式: AC作为DHCP服务器为AP分配IP地址。汇聚交换机SwitchB作…

c++(六)

c(六) 多态概念在c中是如何实现多态静态多态(绑定)动态多态(绑定) 动态多态的实现原理动态内存分配中遇到的问题 重载、重定义、重写的区别抽象类接口类---抽象类空类对象的内存大小explicitfinal修饰类修饰…

java调用远程接口下载文件

在postman中这样下载文件 有时下载文件太大postman会闪退,可以通过代码下载,使用hutool的http包

端口扫描利器--nmap

目录 普通扫描 几种指定目标的方法 TCP/UDP扫描 端口服务扫描 综合扫描 普通扫描 基于端口连接并响应(真实) ​ nmap -sn 网段(0/24)-sn 几种指定目标的方法 单个IP扫描 IP范围扫描 扫描文件里的IP 扫描网段,(排除某IP) 扫描网段(排除某清单IP) TCP/UDP扫描 -sS …

MoE模型大火,源2.0-M32诠释“三个臭皮匠,顶个诸葛亮”!

文 | 智能相对论 作者 | 陈泊丞 近半年来,MoE混合专家大模型彻底是火了。 在海外,OpenAI的GPT-4、谷歌的Gemini、Mistral AI的Mistral、xAI的Grok-1等主流大模型都采用了MoE架构。而在国内,浪潮信息也刚刚发布了基于MoE架构的“源2.0-M3…

vue3的核心API功能:computed()API使用

常规使用方法: 这样是常规使用方法. 另一种,可写计算属性的使用方法: 这样分别定义computed的get回调函数和set回调函数, 上面例子定义了plusOne.value的值为1, 那么这时候就走了computed的set回调函数,而没有走get回调函数. 当我们打印plusOne.value的值的时候,走的是get的…

基于 Solana 的 Drift Protocol 快速崛起,重新定义去中心化衍生品市场

随着区块链技术的快速发展,加密市场的格局正在悄然改变。投资者对透明度、效率和去中心化的需求愈发强烈,之前完全由中心化交易主导的加密货币交易,开始向链上转移。 根据 Coingecko 的最新数据,CEX 和 DEX 的现货交易量已经达到了…

VBA技术资料MF159:实现某个区域内的数据滚动

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

python双色球选号程序的实现与解析

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:双色球选号游戏的魅力 二、程序设计与实现 1. 生成红色球号码 2. 生…

1794 jsp蛋糕店管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 蛋糕店管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助采用了java设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&…

【机器学习】Apriori算法在关联规则学习中的应用

探索数据背后的奥秘:Apriori算法在关联规则学习中的魅力 一、关联规则学习的崛起二、Apriori算法的王者之路三、Apriori算法的实际应用 在数字时代的浪潮中,数据正逐渐成为推动社会发展的新引擎。如何从海量数据中挖掘出有价值的信息,成为了各…

【加密与解密(第四版)】第十三章笔记

第十三章 HOOK技术 13.1 Hook概述 IAT HOOK(改地址) BOOL IAT_InstallHook(){BOOL bResult FALSE ;HMODULE hCurExe GetModuleHandle(NULL);PULONG_PTR pt ;ULONG_PTR OrginalAddr;bResult InstallModuleIATHook(hCurExe,"user32.dll",&qu…

最新淘宝死店全自动采集私信筛选脚本,号称日赚500+【采集软件+使用教程】

原理: 利用脚本自动采集长时间未登录店铺,然后脚本自动私信对应的店铺,看看商家是不是不回消息来判断是否是死店,再下单购买死店的产品,超过48小时不发货就可以联系客服获得赔付,一单利润百分之5%-30%&…

Mybatis进阶——动态SQL(1)

目录 一、 <if> 标签 二、<trim> 标签 三、<where> 标签 四、<set> 标签 五、<foreach> 标签 六、<include> 标签 动态SQL 是Mybatis的强大特性之一&#xff0c;能够完成不同条件下的不同SQL拼接&#xff0c;可以参考官方文档&#…

失落的方舟 命运方舟台服怎么下载游戏客户端 游戏账号怎么注册

《失落的方舟》&#xff08;Lost Ark&#xff09;是韩国Smilegate公司精心打造的一款大型多人在线角色扮演游戏&#xff08;MMORPG&#xff09;&#xff0c;以其精美的画面、沉浸式的剧情、类似动作游戏的战斗体验和广阔的开放世界设定&#xff0c;自面世以来便深受全球玩家喜爱…