【JAVA_SE学习笔记】Object类

《Java SE实战指南》16:根类(Object) 我从哪里来? 阅读详情

【JAVA_SE学习笔记】Object类

Object 类是类层次结构的根类。每个类都使用 Object 作为超类(父类)。所有对象(包括数组)都实现这个类的方法
常用方法:
  1. public int hashCode()
  返回该对象的哈希码值
  hashCode()—–>通过哈希算法(哈希表:hashtable)—->地址值(不是实际意义上的地址值!)
  
  2. public final Class getClass()
  返回此 Object 的运行时类 (Java反射机制中讲!)
  Class类中有一个方法:
  public String getName()以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称(全路径名称)
  
  3. public String toString()
  返回该对象的字符串表示(建议所有子类都重写此方法)
  默认情况返回的字符串:完整类名+@+哈希码
  直接输出一个对象,其实就是输出该对象的toString方法返回的字符串
  toStirng源码:

public String toString() {
      return this.getClass().getName() + "@" + Integer.toHexString(this.hashCode());
}

  可以方法重写,通过toString方法返回对象信息
  
  4. public boolean equals(Object obj)
  指示其他某个对象是否与此对象“相等”
  判断两个对象是否为同一个对象,默认是比较的内存地址
  equals()方法的源码:

public boolean equals(Object obj) {
      return (this == obj);
}

  由于Object类中的equals()方法底层是通过”==”来实现的,所以默认比较的是地址值,如果想比较内容是否相同,需要重写equals()方法
  
  5.protected void finalize()throws Throwable
  当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法,但是,什么时候调用垃圾回收器不确定
  System类中的一个方法:
  public void gc();运行垃圾回收器,这个垃圾回收器最终调用的就是finalize()方法
  
  6.protected Object clone()throws CloneNotSupportedException
  创建并返回此对象的一个副本
  注意:Object 类的 clone 方法执行特定的复制操作。首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException
  要去使用clone()方法,当前对象所在的类一定要实现cloneable接口
  举例:

public class Demo1 {
    public static void main(String[] args)throws CloneNotSupportedException{
        Object o = new Object();
        System.out.println(o.hashCode());//648199445  输出哈希值
             System.out.println(o.toString());//java.lang.Object@26a2bd15 
        System.out.println(o);//java.lang.Object@26a2bd15 直接输出一个对象,等于输出toString方法输出的字符串
        Class c=o.getClass();
        System.out.println(c.getName());//java.lang.Object  获取当前正在运行的这类的全路径名称!

        Student s1=new Student("张三");
        System.out.println(s1.name);//张三
        //复制s1这个对象
        Object obj = s1.clone() ;
        //向下转型:
        Student s2 = (Student) obj;
        System.out.println(s2.name);//张三
    }
}
//要去使用clone()方法,当前对象所在的类一定要实现Cloneable接口
class Student implements Cloneable{
    String name;
    public Student() {
    }
    public Student(String name) {
        this.name = name;
    }
    //重写clone方法
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }   

}

  java规范:一般在重写equals方法时都会重写hashCode方法
  
  ==和equal()方法的区别:
  ==:比较的是两个对象的地址值是否相同
  equals()方法:默认比较的是两个对象的地址值是否相同,如果重写了Object类中的equals()方法,那么默认比较就是两个对象的内容是否相同
  举例: 

public class Demo2 {
    public static void main(String[] args) {
        Person p1=new Person("狗蛋",15);
        Person p2=new Person("狗蛋",15);
        Person p3=new Person("狗剩",23);
        System.out.println(p1.equals(p2));//true
        System.out.println(p1.equals(p3));//false
    }
}

class Person{
    String name;
    int age;
    public Person() {

    }
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public int hashCode() {
        return super.hashCode();
    }
    @Override
    public boolean equals(Object obj) {
        if(this==obj){//是否为同一对象
            return true;
        }else if(this==null){//传来的对象是否为空
            return false;
        }else if(this.getClass()!=obj.getClass()){//运行时类是否一样
            return false;
        }
        //比较对象数据信息是否一样
        Person p=(Person) obj;
        if(p.name!=this.name){
            return false;
        }else if(p.age!=this.age){
            return false;
        }
        return true;
    }

}
《Java SE实战指南》16-01:解密Object类 -- 阅读详情

相关推荐

STC8G1K08A的10位PWM避坑指南:为什么你的占空比调节总失效?(附寄存器操作时序图)

本文深入剖析了STC8G1K08A单片机10位PWM功能中占空比调节失效的核心原因,揭示了数据手册未明确指出的寄存器操作时序陷阱。通过对比错误与正确配置的波形,文章指出关键在于更新占空比高2位前需临时关闭PWM输出,并提供了经过验证的安全操作宏与函数库,帮助开发者彻底解决此问题,实现0%-100%的平滑控制。

yyy34的博客 747

JavaSE进阶 数组

数组内存结构、数组初始化、遍历数组等

Black_Cat_33的博客 300

MAIXCAM无线连接实战:5分钟搞定远程调试与代码烧录(避坑版)

本文提供了一份详细的MAIXCAM无线连接实战指南,帮助嵌入式视觉开发者快速配置远程调试与代码烧录。文章重点介绍了通过MaixHub IDE进行Wi-Fi配置、建立远程终端连接、使用SFTP进行文件传输以及管理自启动应用程序的完整流程,并针对IP地址变动、信号中断等常见问题提供了实用的避坑解决方案,旨在提升开发效率与灵活性。

weixin_29188043的博客 298

java.lang.ClassCastException: [Ljava.lang.Object;

百度说这是类型转换出错的,比如对象A里面有属性对象B,如果强制转换成对象A就会出现这个错误。下面是代码: List list = null; String jsonStr = "AccountOpreate:["; AccountOpreate dataList[]; AccountMember memberObj; AccountOpreate opreateObj;

shenya2的专栏 1017

单电源运放偏置电压设计:如何避免信号失真

本文详细解析了单电源运放偏置电压设计的关键技术,以LM358为例,探讨如何通过1/2 VCC偏置避免信号失真。文章从基本原理出发,揭示了双端偏置的黄金法则,并提供了常见设计陷阱的解决方案和进阶调试技巧,帮助工程师实现高保真信号放大。

weixin_29266647的博客 293

免费测试国外大模型Claude 3.7 Sonnet API:无需api key(秘钥)

Claude 3.7 Sonnet是Anthropic公司推出的第三代Claude系列AI模型中的中规模版本(2024年发布),在性能与效率间实现平衡。该模型基于改进的Transformer架构,支持128K上下文窗口,擅长复杂推理、数学计算和创意写作,在GSM8K数学基准测试中准确率达92%。其采用"宪法AI"伦理框架,通过多轮对抗训练减少有害输出,同时新增多模态理解能力(可解析图片/图表内容)。Claude 3.7 Sonnet是Anthropic推出的高效轻量级大模型,主打快速响应与成本优化。

Explinks的博客 1497

Java高级之内存初始化时机

本文来自http://blog.youkuaiyun.com/liuxian13183/,引用必须注明出处! 研究内存的初始化时机,有助于设计“降低应用内存消耗”方案! public class A { private Object mObject = new Object();// or static private st...

劝学 2984

别再只调颜色阈值了!优化K210色块追踪性能的5个关键参数与实战技巧

本文深入探讨了K210色块追踪性能优化的五大核心策略,包括图像预处理参数精细调控、find_blobs参数进阶配置、运动控制算法升级、硬件时序优化以及可视化调试系统构建。通过实战技巧和参数调整方法,帮助开发者提升K210在色块追踪项目中的识别稳定性和响应速度,适用于云台追踪等应用场景。

weixin_42531588的博客 225

Java Object对象的详解

面向对象的核心思想:“找合适的对象,做适合的事情”。 合适的对象: 1. 自己描述类,自己创建对象。 2. sun已经描述了好多常用的类,可以使用这些类创建对象。 sun定义的那么多的类的终极父类是Object。Object描述的是所有类的通用属性与方法。 1.toString方法 toString() 返回对象的描述信息   java.lang.Object@de6ced

重心开始,重新开始 4700

汽车TSN时间敏感网络测试技术与探索系列讲座4 -TSN802.1AS同步要求及验证方法

TSN网络各设备类型同步性能要求是什么?各类设备的测试组网及测试内容。也将通过演示来展示相关测试结果,及如何解决上述的测试关注点。

weixin_43903833的博客 761

在 Windows 上安装 OpenCV – C++ / Python

而且,安装并不是一件容易的事。这些安装程序仅适用于安装 OpenCV for C++。如果您想安装适用于 Python 的 OpenCV,您将在博客后面找到相关信息。在这篇博文中,我们将在 Windows 上安装适用于 C++ 和 Python 的 OpenCV。C++ 安装是在自定义安装 exe 文件的帮助下完成的。而Python的安装是通过Anaconda完成的。从源代码安装 OpenCV 需要花费大量时间。根据您的硬件和安装配置,该过程可能需要 5 分钟到 2 小时不等。

Demondai999的博客 2091

java输出的时候出现[Ljava.lang.String是什么意思+解决方法

例如:` public static void main(String[] args) { String a1 = "123.sdggs.1234df"; String[] a2 = a1.split("\\."); System.out.println(a2); }`

实用ai技巧 6万+

渗透测试面试题

渗透测试面试题 一.思路流程 1.信息收集 服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等) 网站指纹识别(包括,cms,cdn,证书等),dns记录 whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等) 子域名收集,旁站,C段等 google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等 扫描网站目录结构,爆后台,网站banner,测试文件,...

千寻的博客 12万+

【Java SE】Object类

Java Object类是类层次结构的根类,所有类都继承自它。主要方法包括:1) toString()返回对象字符串表示,默认显示类名和哈希码;2) equals()比较对象内容,需重写;3) clone()创建对象副本,需实现Cloneable接口;4) hashCode()返回对象哈希码,equals相等的对象哈希码必须相同;5) getClass()返回运行时类;6) finalize()方法已过时。使用时需注意方法重写和深浅拷贝区别。Object类为所有Java对象提供了基本操作方法。

Boop_wu的博客 2717

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Java SE】抽象类与Object类

Java中的抽象类与接口是面向对象编程的核心抽象机制。抽象类用于定义部分实现的模板,可以包含抽象方法和具体实现,但不能直接实例化。它通过abstract关键字声明,子类必须实现所有抽象方法。抽象类适用于有共同特征的类族,提供基础实现。接口则定义纯粹的抽象规范,Java 8后支持默认方法。两者在继承、多实现、访问修饰等方面存在差异,开发者应根据场景选择:抽象类用于"is-a"关系,接口用于"can-do"能力。合理使用这两种机制能提高代码的灵活性和可扩展性。

记录了从0学习Java技术栈的日常 1402

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Java】Object类及类中方法

Object类的介绍及类中方法的介绍和使用

trong_ 的烂笔头 2364

Java SE中Object类

类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。 一.hashCode()方法 想要弄明白hashCode的作用,必须要先知道Java中的集合。   总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。这里就引出一个...

myllxy 280

【Java SE】native关键字、== 比较符、Object类的几个常用方法

应用示例:判断两个Person对象的内容是否相等,如果各个属性值都一致,则返回true,反之返回falsePerson p1 = new Person("小马", 20, '男');Person p2 = new Person("小马", 20, '男');Person p3 = new Person("蔡徐坤", 20, '男');//true//false@Override//如果是同一对象//类型判断,是Person类型才进行比较。

m0_55908255的博客 869

学习笔记073——Java中的【Object】和【包装类】

Java 通过类来构建代码的结构,类分为两种:1、Java 提供的工具类,不需要开发者自定义的类,可以直接调用。2、开发者自定义的类。Java 程序 = JDK 类库+开发者自定义类+第三方框架Object 就是 JDK 提供的一个类,并且它很特殊,它是所有类的根节点,Java 中的所有类包括 JDK 提供,以及开发者自定义的,第三方框架的所有内容都属于 Object 的派生类。hashCode:每一个 Java 对象都有自己的 hashCode,什么是 hashCode。

code__bee的博客 984

JAVA SE基础 Object类

API概述以及Object类的概述

sweetpymoon的博客 231

【Java SE】基础知识回顾——【8.Object类 | 常用API】

返回该对象的字符串表示。toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。:指示其他某个对象是否与此对象“相等”。调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的“相同”有默认和自定义两种方式。类 表示特定的瞬间,精确到毫秒。

qq_40639981的博客 1579

Java SE-object类和里面的3个主要方法解读

object类的介绍-----toString/equals/haskcode方法的解读和介绍

大学成长道路上的探索经历与点滴思考,与君共勉,共筑成长。 1278

Java SE:面向对象(下):Object类

面向对象(下):Object类

gdswsj的博客 957

【Java SE】类与对象的认识

本文介绍了面向对象编程中类与对象的核心概念。首先对比了面向过程与面向对象的不同思维方式,通过洗衣机的例子说明面向对象更关注对象间的协作。然后详细讲解了类的定义格式、成员变量和方法的声明方式,以及类的实例化过程。重点阐述了this引用的作用及其特性,解释其作为成员方法隐藏参数的工作原理。最后介绍了对象的构造方法,包括构造方法的重载、默认初始化规则和使用this调用其他构造方法的注意事项。文章通过代码示例展示了如何定义类、实例化对象以及正确使用this引用,帮助读者理解面向对象编程的基本概念和实现方式。

记录了从0学习Java技术栈的日常 1165

JAVA SE之Object类

Object类1 API概述以及Object类的概述2 public int hashCode()3 public final Class getClass()4 public String toString()5 public boolean equals(Object obj)6 Object类的clone() 方法 1 API概述以及Object类的概述 A:API(Application Programming Interface) 应用程序编程接口 B:Java API 就是Java提供给我们使用

weixin_54099780的博客 122

Java SE 语法基础总结

Java是一种面向对象的编程语言,强调代码的可移植性和安全性。它通过“一次编写,到处运行”的理念,允许程序在不同操作系统上运行,这得益于Java虚拟机(JVM)的抽象层。Java语言设计简洁,支持多线程、网络编程和内存管理自动化(垃圾回收)。变量必须初始化:Java要求所有变量(基本类型或引用类型)在声明时或使用前赋值,否则编译失败。推荐定义时赋初始值(如0或null// 正确:初始化// 错误:未初始化long和float的特殊处理整数默认类型为int,定义long时需加L后缀(如10L)。

2402_87233358的博客 1671
上一篇: 【JAVASE_学习笔记】内部类
下一篇: 【JAVA_SE学习笔记】Scanner类
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值