首页 > 其他分享 >Objects

Objects

时间:2024-03-21 14:33:06浏览次数:26  
标签:对象 Object equals Objects toString null public

Object类

介绍:

  • 所有的类,都直接或者间接的继承了 Object 类 (祖宗类)

  • Object类的方法是一切子类都可以直接使用的,所以我们要学习Object类的方法。

常用方法:

方法名说明
public String toString() 默认是返回当前对象在堆内存中的地址信息:类的全限名@内存地址
public Boolean equals(Object o) 默认是比较当前对象与另一个对象的地址是否相同,相同返回true,不同返回false

5.2.1toString

方法名说明
public String toString() 默认是返回当前对象在堆内存中的地址信息:类的全类名@十六进制哈希值

当我们打印对象名的时候, println() 源码中会自动调用对象的toString方法。

public static String valueOf(Object obj) {
   return (obj == null) ? "null" :obj.toString();
}

Object类toString方法的源码:

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

解释:对象的全类名@十六进制哈希值

哈希值 = 对象的值 + 哈希算法, 常被人称作地址值

toString存在的意义:

  • 父类 toString() 方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息。

  • 返回对象的属性信息(成员变量的值), 便于调试操作。

  • 今后打印某一个对象的名字, 看到的不是地址值, 就说明该类重写过toString方法。

5.2.2equals

方法名说明
public boolean equals(Object o) 默认是比较当前对象与另一个对象的地址是否相同相同返回true,不同返回false
//Object类中equals的源代码
public boolean equals(Object obj) {
       return (this == obj);
  }

 

父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则

//如下,就是在类中重写equals方法
//stu1.equals(stu2)
//o:stu2对象
public boolean equals(Object o) {
       //如果地址相同则直接返回true
       if (this == o) return true;
       //如果stu2是null或stu1和stu2的类型不相同(这里直接用他们的.class文件进行比较),则直接返回false
       if (o == null || getClass() != o.getClass()) return false;
       //由于接收的是Object对象,而其没有age属性,所以需要强制转化
       Student student = (Student) o;
       return age == student.age && Objects.equals(name, student.name);
  }

 

使用此方法比较,如stu1.equals(stu2)时,如果stu1为null,则会出现空指针异常

 

Objects

Objects类与 Object 还是继承关系,Objects类是从JDK 1.7开始之后才有的。

方法名说明
public static boolean equals(Object a, Object b) 比较两个对象的,底层会先进行非空判断,从而可以避免空指针异常。再进行equals比较
public static boolean isNull(Object obj) 判断变量是否为 null

equals

使用方法

Object.equals(对象1,对象2);

源码分析

public static boolean equals(Object a, Object b) {
   //先比价a,b地址是否相同,相同则||右边短路,返回true
   //不同则在判断a是否为null,如果是则&&右边短路,返回false
   //不是在调用equals方法比较,返回方法的返回值
   return (a == b) || (a != null && a.equals(b));
}

 

接口是否继承了Object?

接口表面上不能继承Object,但底层继承了Object

标签:对象,Object,equals,Objects,toString,null,public
From: https://www.cnblogs.com/linzel/p/18087322

相关文章

  • Python scipy.ndimage.find_objects用法及代码示例
    用法scipy.ndimage.find_objects(input,max_label=0)在标记数组中查找对象。参数:input:整数数组包含由不同标签定义的对象的数组。值为0的标签将被忽略。max_label:整数,可选要在输入中搜索的最大标签。如果没有给出max_label,则返回所有对象的位置。object_slices:元组......
  • TCL学习:First Class Tcl Objects and Relationships
    前言:最近需要移植vivado工程到新板卡上。之前只学了基础TCL语法,复杂一点的指令看博客看文档对陌生名词挠头。才发现官方文档VivadoDesignSuiteTclCommandReferenceGuide(UG835)第一章的FirstClassTclObjectsandRelationships对Vivado用到的TCL的指令做了很好的知识铺......
  • C#对window 硬件类操作 ManagementObjectSearcher
    在解决方案--引用--右键--添加引用---程序集---框架---勾选System.Management 前言: 我们在很多情况下想要获得计算机的硬件或操作系统的信息,比如获得CPU序列号给自己的软件添加机器码锁绑定指定电脑。又或者想要获得硬盘分区,声卡显卡等信息。开篇:我们用到的主要类是Managem......
  • Active Directory Group Policy Objects | 活动目录组策略对象 | 介绍 | 配置
    介绍ActiveDirectory(AD)的组策略对象(GroupPolicyObjects,简称GPO),在Windows环境中使用GPO来配置、管理和强制执行网络中的计算机和用户设置。组策略对象(GPO)是策略设置的虚拟集合,GPO具有唯一的名称,例如GUID。组策略设置包含在GPO中,GPO可以表示文档系统和ActiveDirectory......
  • A Format Compliant Encryption Method for 3D Objects Allowing Hierarchical Decryp
    Abstract—Withtheincreasingpopularityof3Dobjectsinindustryandeverydaylife,3Dobjectsecurityhasbecomeessential.Whilethereexistsmethodsfor3Dselectiveencryption,whereaclear3Dobjectisencryptedsothattheresulthasthedesiredl......
  • 2_9 Recursive Objects
    2_9   RecursiveObjectsObjectscanhaveotherobjectsasattributevalues.Whenanobjectofsomeclasshasanattributevalueofthatsameclass,itisarecursiveobject.对象可以i有其他对象作为属性值。当类的对象有相同类下的属性值,那么它就是个递归对象。......
  • JavaImprove--Lesson02--Object类,Objects工具类,封装类
    一.Object类Java中的Object类是所有类的超类,它是Java类层次结构的根类。这意味着所有的类都直接或间接地继承自Object类equals(Objectobj):用于比较两个对象是否相等。默认实现是比较对象的引用,但可以通过重写此方法来比较对象的内部状态。hashCode():返回对象的哈希码值,通......
  • Java: OpenWeatherMap json Deserialization of Java Objects
    openweathermap.json{"coord":{"lon":114.0683,"lat":22.5455},"weather":[{"id":803,"main":"Clouds","description":"多云",......
  • three.js 使用 sortObjects 和 renderOrder 处理网格修改后覆盖模型的问题
    问题效果:目标效果处理此问题首先需要了解three的渲染机制:渲染机制threejs的渲染器是基于webGL的。它的渲染机制是根据物体离照相机的距离来控制和进行渲染的。也就是说,它根据物体的空间位置进行排序,然后根据这个顺序来渲染物体。对于透明的物体,是按照从最远到最近的顺序进行......
  • 【JavaSE】一些常见API(Object、Objects、Math、System、BigDecimal、包装类、Arrays)
    Object类Object类介绍toString方法直接println(对象名),默认会自动调用(对象名.toString),而.toString默认是返回地址信息->全类名(包名+类名)@地址的十六进制哈希值,因此如果println(对象名)控制台没有输出地址值,说明该类一定重写了Object类的toString方法,比如String类和Arr......