Object类

Object类

概念:Object类是所有类的父类,也就是说任何一个类在定义时候如果没有明确的指定继承一个父类的话,那么它就都默认继承Object类,因此Object类被称为所有类的父类,也叫做基类/超类。

在这里插入图片描述

常用方法

方法类型描述
equals()普通比较两个对象的内存地址是否相同
getClass()普通获取该类的class对象
hashCode()普通获取对象的hash值(hash值不等于内存地址,hash值是内存地址+散列算法算出来的一个数字)
toString()普通获取对象的字符串形式

equals()

Object obj1 = new Object();//0x001
Object obj2 = new Object();//0x002
System.out.println(obj1 == obj2);//false
System.out.println(obj1.equals(obj2));//false
/*** Object类的equals底层源码:* 		public boolean equals(Object obj){* 			//	   0x001== 0x002* 			return this == obj;* 		}*/

equals()方法默认判断的是底层的地址是否相同,如果相同就返回true,不相同返回false。所有Java类都继承了Object类中的equals()方法,但大多数情况下都会根据需要重写此方法,以便按照实际需求比较对象的内容是否相等。

重写equals()

import java.util.Objects;
public class Object01 {private String uname;private String password;private String nickname;public ObjectDemo1() {//无参构造方法}public ObjectDemo1(String uname, String password, String nickname) {this.uname = uname;this.password = password;this.nickname = nickname;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}@Overridepublic boolean equals(Object obj) {if(this == obj){return true;}ObjectDemo1 o2 = (ObjectDemo1) obj;//注意,因为uname是String类型,所以他们这个地方比较使用的equals()是String类重写的equals()方法if(this.getUname().equals(o2.getUname())){  return true;}return false;}}//测试类
public class Test01 {public static void main(String[] args) {Object01 u1 = new Object01("aabbcc","123456","胡歌");Object01 u2 = new Object01("aabbcc","321321","彭于晏");//判断两个对象的账号是否相等,如果相同,那么就认为是同一个对象System.out.println(u1.equals(u2)); //true--- 这里的equals是ObjectDemo1中重写的equals方法}
}

getClass()

Object obj1 = new Object();//0x001
Object obj2 = new Object();//0x002	
Class<? extends Object> class1 = obj1.getClass();//获取Object类的class对象
Class<? extends Object> class2 = obj2.getClass();//获取Object类的class对象
System.out.println(class1 == class2);//true

内存分析:

在这里插入图片描述

hashCode()

Object obj1 = new Object();//0x001
Object obj2 = new Object();//0x002
System.out.println(obj1.hashCode());//366712642
System.out.println(obj2.hashCode());//1829164700

注意:HashCode()是在Java中用于获取对象的[唯一标识符的方法。它是根据对象的内容生成的一个整数值。对象的hashCode()方法被调用时,它返回的是对象的哈希码。

toString()

public class Test01 {public static void main(String[] args) {Object obj = new Object();//0x001//java.lang.Object@15db9742System.out.println(obj);//默认调用toString()System.out.println(obj.toString());}
}

注意:如果我们没有在自定义类中重写toString()方法,那么默认会使用Object类中的toString()方法,该方法返回的是一个包含类名和哈希码的字符串,这通常不是我们想要的结果。因此,我们需要在自定义类中重写toString()方法,以返回我们需要的字符串表示形式。

底层原理

在这里插入图片描述

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

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

相关文章

基于 llama2 的提示词工程案例2

优化大型语言模型&#xff08;LLMs&#xff09; 优化大型语言模型&#xff08;LLMs&#xff09;中的提示词&#xff08;prompts&#xff09;是提高模型性能和输出相关性的重要手段。以下是一些优化提示词的方向&#xff1a; 明确性&#xff1a;确保提示词清晰明确&#xff0c;…

javaWeb入门(自用)

1. vue学习 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script src"https://unpkg.com/vue2"></script> </head> <body><div id"…

linux上如何排查JVM内存过高?

怎么排查JVM内存过高&#xff1f; 前言&#xff1a; 想必工作一两年以后的同学都会逐渐面临到&#xff0c;jvm等问题&#xff0c;但是可能苦于无法熟练的使用一些工具&#xff1b;本文将介绍几个比较常用分析工具的使用方法&#xff0c;带着大家一步步定位分析问题。 1、top 查…

【大模型】LLaMA-1 模型介绍

文章目录 一、背景介绍二、模型介绍2.1 模型结构2.2 模型超参数2.3 SwiGLU 三、代码分析3.1 模型结构代码3.2 FairScale库介绍 四、LLaMA家族模型4.1 Alpaca4.2 Vicuna4.3 Koala(考拉)4.4 Baize (白泽)4.5 Luotuo (骆驼&#xff0c;Chinese)4.6 其他 参考资料 LLaMA&#xff08…

05-08 周三 FastBuild FastAPI 引入并发支持和全局捕获异常

时间版本修改人描述2024年5月8日20:41:03V0.1宋全恒新建文档 简介 由于FastBuild之前花费了大概5天的时间优化&#xff0c;但最近重新部署&#xff0c;又发现了一些问题&#xff0c;就很痛苦&#xff0c;五一之后&#xff0c;自己又花了三天的时间系统的进行了优化。 上一波优…

历代著名画家作品赏析-东晋顾恺之

中国历史朝代顺序为&#xff1a;夏朝、商朝、西周、东周、秦朝、西楚、西汉、新朝、玄汉、东汉、三国、曹魏、蜀汉、孙吴、西晋、东晋、十六国、南朝、刘宋、南齐、南梁、南陈、北朝、北魏、东魏、北齐、西魏、北周、隋&#xff0c;唐宋元明清&#xff0c;近代。 一、东晋著名…

qt开发解压缩zip文件实现

作者开发环境&#xff1a;Qt5.8 &#xff0c;win10 总体思路&#xff1a;首先我们编译zip源码&#xff0c;生成zip的动态库&#xff1b;然后再编译quazip源码&#xff0c;得到quazip的动态库&#xff1b;最后在我们的程序中去调用。 详细步骤&#xff1a; 1、编译zlib zlib…

sourceTree push失败

新电脑选择commit and push&#xff0c;报错了&#xff0c;不过commit成功&#xff0c;只不过push失败了。 原因是这个&#xff0c;PuTTYs cache and carry on connecting. 这里的ssh选择的是 PuTTY/Plink&#xff0c;本地没有这个ssh密钥&#xff0c;改换成openSSH&#xff…

链表的阶乘

int FactorialSum(List L) {int res 0; // 结果初始化struct Node* x L; // 从链表的头节点开始// 遍历链表中的每一个节点while (x ! NULL) {int data x->Data; // 当前节点的值int y 1; // 用于计算当前节点值的阶乘// 计算当前节点值的阶乘for (int j 1; j < dat…

TCP四次挥手中为什么 TIME_WAIT 等待的时间是 2MSL?

TCP 连接断开 1、TCP 四次挥手过程是怎样的&#xff1f;如下图 2、为什么 TIME_WAIT 等待的时间是 2MSL&#xff1f; MSL 是 Maximum Segment Lifetime&#xff0c;报文最大生存时间&#xff0c;它是任何报文在网络上存在的最长时间&#xff0c;超过这个时间报文将被丢弃。因…

【工具推荐定制开发】一款轻量的批量web请求命令行工具支持全平台:hey,基本安装、配置、使用

背景 在开发 Web 应用的过程中&#xff0c;作为开发人员&#xff0c;为了确认接口的性能能够达到要求&#xff0c;我们往往需要一个接口压测工具&#xff0c;帮助我们快速地对我们所提供的 Web 服务发起批量请求。在接口联调的过程中&#xff0c;我们通常会用 Postman 等图形化…

MVC与MVVM架构模式

1、MVC MVC&#xff1a;Model-View-Controller&#xff0c;即模型-视图-控制器 MVC模式是一种非常经典的软件架构模式。从设计模式的角度来看&#xff0c;MVC模式是一种复合模式&#xff0c;它将多个设计模式结合在一种解决方案中&#xff0c;从而可以解决许多设计问题。 MV…