一篇文章带你了解java Object根类中关于toString,equals的方法

目录
  • toString:
    • 代码案例:
  • equals:
    • 代码案例:
  • 总结

toString:

概念:拼接对象的地址值;toString()方法用于返回表示对象值的字符串(返回的是String对象)。

快捷写法:Alt+Insert,直接会显示toString的方法,选取需要返回的对象就行。

代码案例:

定义一个person类,属性如下:

(1)身份证号,性别,姓名,年龄,户籍,出生日期(Data类型,需要引用java.uitl.Data)功能:

(2)自我介绍:介绍格式:(toString)

身份证号+姓名+户籍

(3)提供对象比较equals方法,只要身份证号+姓名相同就认为对象相等

第二个小问中,自我介绍需要用到toSting的方法。看代码:

 @Override//方法重写
    public String toString() {
        return "Person{" +
                "ID_card='" + ID_card + '\'' +
                ", name='" + name + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

Alt+Insert:会得到一个提示框,选取toString方法:

点击toString,会显示如下,因为例子题中要求比较的是

“(2)自我介绍:介绍格式:(toString)”

身份证号+姓名+户籍。”

所以,选取我们需要的三个属性(成员变量),跳格选取ctrl+鼠标左键,按住ctrl不放,点击我们要的三个成员变量。

这样我们就能得到我们想要的toString的方法了。

equals:

概念:默认情况下(继承自Object类),equals和==是一样的(都是比较的对象的地址值)。但子类一般都要重写这个方法。(重写后比一般是比较对象的属性,也就是值是否相等)。

代码案例:

定义一个person类,属性如下:

(1)身份证号,性别,姓名,年龄,户籍,出生日期(Data类型,需要引用java.uitl.Data)功能:

(2)自我介绍:介绍格式:(toString)

身份证号+姓名+户籍

(3)提供对象比较equals方法,只要身份证号+姓名相同就认为对象相等

快捷写法:Alt+Insert:会得到一个提示框,选取equals方法:

代码中要求身份证与姓名相同。

所以勾选选取身份证与姓名的成员变量,(当我们需要比较哪些属性时,就选取哪些属性(成员变量))

选取好后,next,finish,或者是直接Enter,Enter结束完成就行。

代码就会显示出来:对于还未深入学习,不了解多态,不了解Object的同学,我们只要知道如果快捷重写equals的方法就好。而对于比较特殊的equals案例题方法重写,请往下看:

@Override//重写equals方法
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return Objects.equals(ID_card, person.ID_card) &&
                Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(ID_card, name);
    }

按要求实现下列问题:

1)封装一个西游记人物类Person:包含公共属性:姓名(name)、身高(height)、武器(weapon)、种族(race),提供修改器方法(set方法),可修改全部的属性,再提供一个void skill()技能方法

2)创建3个类继承Person类:Tangseng(唐僧)、Sunwukong(孙悟空)、Baigujing(白骨精),分别设置他们的种族为:人族、仙族、妖族(其他信息自己确定)。

3)创建3个对象分别打印对象信息,按照例如:“姓名:孙悟空;种族:仙族”的格式在控制台输出信息。

4)将3个子类重写技能方法void skill(),如果是孙悟空,就打印“吃俺老孙一棒 -100”,如果是唐僧,就打印“紧箍咒 -150”,如果是白骨精,就打印“九阴白骨爪 -125”,在测试类中调用这个方法。

5)重写父类的equals方法进行判断,如果种族属性是人族或者仙族,则返回true,如果是妖族,则返回false,在测试类中对孙悟空和唐僧进行比较,打印结果,对唐僧和白骨金进行比较,并打印结果。

我们看第五个小问,

6)重写父类的equals方法进行判断,如果种族属性是人族或者仙族,则返回true,如果是妖族,则返回false,在测试类中对孙悟空和唐僧进行比较,打印结果,对唐僧和白骨金进行比较,并打印结果。

这里的equals方法重写中,要求比较种族,而且有两个对象之间的比较。所以,我们快捷的equals速写方法,并不能满足题意要求。

而这里,我们只学过继承,只会Alt+Insert,快捷写出equals方法的同学,这里的equals方法,就需要自己重新定义来写,当然,我们运用学过的知识简单来完成。

看代码:

public boolean equals(Person p) {//A.equ(B)
        if (this.race.equals("妖族")||p.race.equals("妖族"))
        {
            return false;
        }else
        {
            return true;
        }

    }

通过与上述快捷equals方法比较,我们发现,对于根类Object的传入,我们改成了一个对象类Person的传入。

this.race代表一个对象,p.race代表一个对象,"妖族代表种族比较的具体值"。

这样我们就能很轻松的进行了两个对象A与B的关于种族的比较。而不需要运用多态或者是其他的方法进行敲写。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • java中Object类4种方法详细介绍

    目录 Object(四大方法): hashCode()方法: equals()方法: getClass()方法: toString()方法: 总结 Object(四大方法): 文章干货满满,耐性看完~~何为Object?首先先来看看官方对Object的介绍:在这里附上Java官方的查阅工具:https://docs.oracle.com/en/java/javase/17/docs/api/index.html 由官方介绍可见,object属于Java.lang包内的一个类,而且提供了很多种方法

  • Java的Object类九个方法技巧

    目录 一.getClass() 二.finalize() 三.toString() 四.equals()和hashcode() 五.wait().notify()和notifyAll() 六.clone() 前言: Java的Object 类的完整路径是java.lang.Object ,是所有类的父类编译,当我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类(隐式继承).Object类有九大常用方法,分别是getClass().finali

  • Java Object类equals方法

    基本概念: Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入: Object类是所有Java类的祖先.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法.可以使用类型为Object的变量指向任意类型的对象 equals()方法:比较两个对象是否同一       如果两个对象具有相同的类型以及相同的属性值,则称这两个对象相等.如果两个引用对象指的是同一个对像,则称这两个变量同一.Object类中定义的equa

  • java中的Object类的toSpring()方法

    Object是类层次结构的根,每个类都可以将Object作为超类.所有类都直接或者间接的继承自该类 构造方法:public Object() 回想面向对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法? 因为它们的顶级父类只有无参构造方法 package com.itheima_56; public class Student extends Object{ private String name; private int age; public Student(){ } public

  • Java中Object转换为List类型的实现方法

    前言 在很多项目编写过程中会使用Map<?>类型来进行参数的传递.为了能够让更多的类型放入value中,实例化的类型往往是Map<String, Object>来存放数据. 解析数据的时候map.get(key)所获取到的类型为Object.此时,需要转换成我们所需要的数据类型进行使用. 类型转换 在类型转换工程中,常见的转换方式为强制转换.如(String)map.get(key),(int)map.get(key)等.在是如果接收的类型为List,此时强转(List<St

  • Java中Object类常用的12个方法(小结)

    目录 前言 1. getClass 方法 2. hashCode 方法 3. equals 方法 4. clone 方法 5. toString 方法 6. notify 方法 7. notifyAll 方法 8. wait(long timeout) 方法 9. wait(long timeout, int nanos) 方法 10. wait 方法 11. finalize 方法 前言 Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的"老祖宗&qu

  • Java中父类Object的常用方法总结

    简介 Object类: 这个类java.lang.java是所有类默认继承的父类 Object类中常用的三个方法:toString() , equal() , hashCode() 一.toString()方法 对象的自我描述,对象的自我介绍 在对象的自我描述过程中,由于使用get()方法打印实例变量比较麻烦,为了简便,使用toString() . Public String toString(){ Return "学好" + getNo() + "姓名" + ge

  • 一篇文章带你了解java Object根类中关于toString,equals的方法

    目录 toString: 代码案例: equals: 代码案例: 总结 toString: 概念:拼接对象的地址值:toString()方法用于返回表示对象值的字符串(返回的是String对象). 快捷写法:Alt+Insert,直接会显示toString的方法,选取需要返回的对象就行. 代码案例: 定义一个person类,属性如下: (1)身份证号,性别,姓名,年龄,户籍,出生日期(Data类型,需要引用java.uitl.Data)功能: (2)自我介绍:介绍格式:(toString) 身份

  • 一篇文章带你入门Java UML的类图

    目录 一.什么是UML 二.UML类图 总结 一.什么是UML 统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明.可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言.UML是面向对象设计的建模工具,独立于任何具体程序设计语言.UML 本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他 们之间的关系,比如类.接口.实现.泛化.依赖.组合.聚合等. 使用UML图的好处: UML可以帮助开发

  • 一篇文章带你了解Java Spring基础与IOC

    目录 About Spring About IOC Hello Spring Hello.java Beans.xml Test.java IOC创建对象的几种方式 Spring import settings Dependency Injection 1.构造器注入 2.set注入 3.拓展注入 P-namespcae&C-namespace Bean scopes singleton prototype Bean的自动装配 byName autowire byType autowire 小结

  • 一篇文章带你了解Java中ThreadPool线程池

    目录 ThreadPool 线程池的优势 线程池的特点 1 线程池的方法 (1) newFixedThreadPool (2) newSingleThreadExecutor (3) newScheduledThreadPool (4) newCachedThreadPool 2 线程池底层原理 3 线程池策略及分析 拒绝策略 如何设置maximumPoolSize大小 ThreadPool 线程池的优势 线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些

  • 一篇文章带你了解Java基础-多态

    目录 Java基础知识(多态) 多态 多态的定义和存在的必要条件 多态的案例 多态的弊端 引用类型转换 总结 Java基础知识(多态) 多态 多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定. 因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用

  • 一篇文章带你入门Java修饰符

    目录 定义 分类 访问控制修饰符 非访问控制修饰符 修饰符的使用说明 修饰类 修饰方法 访问控制修饰符 非访问控制修饰符 修饰变量 总结 定义 Java修饰符:修饰符用来定义类.方法或者变量,通常放在语句的最前端. 分类 主要分为2类: 访问控制修饰符 非访问控制修饰符 访问控制修饰符 可以使用访问控制符来保护对类.变量.方法和构造方法的访问.分为以下4中权限:private,default,protected,public. 权限说明: 修饰符 当前类 同包 子类(不同包) 不同包(其他类)

  • 一篇文章带你复习java知识点

    JDK JRE JVM JDK: Java标准开发包,它提供了编译.运⾏Java程序所需的各种⼯具和资源,包括Java编译器.Java运⾏时环境,以及常⽤的Java类库等. JRE: Java运⾏环境,⽤于解释执⾏Java的字节码⽂件. JVM Java虚拟机,是JRE的⼀部分.负责解释执⾏字节码⽂件,是可运⾏java字节码⽂件的虚拟计算机 区别联系:(问答题会考可能) JDK包含JRE,JDK 和 JRE 中都包含 JVM.JDK出了包含jre还包含⼀些常⽤开发⼯具和基础类库 JDK ⽤于开发

  • 一篇文章带你了解Java 中序列化与反序列化

    目录 一. 序列化和反序列化概念 二. 序列化和反序列化的必要性 三. 序列化和反序列化的实现 1. JDK类库提供的序列化API 2. 实现序列化的要求 3. 实现Java对象序列化与反序列化的方法 4. JDK类库中序列化的步骤 5. JDK类库中反序列化的步骤 四.序列化的必要条件 五.序列化高级,使用情境分析 1. 序列化ID问题 特性使用案例 2. 静态变量序列化 3. 父类的序列化与 Transient 关键字 4. 对敏感字段加密 5. 序列化存储规则 总结 一. 序列化和反序列化

  • 一篇文章带你了解Java容器,面板及四大布局管理器应用

    目录 什么是容器? 什么是面板? JPanel面板 JScrollPane面板 什么是布局管理器? 绝对布局管理器 流布局管理器 边界布局管理 网格布局管理器 容器.面板.布局管理器之间的关系 总结 什么是容器? 在Java的GUI界面设计中,关于容器的理解,从字面意思我们就可以认为它是存放控件的地方,而这个地方依托在窗体之上,常用的容器是container. 而关于container容器我们应该有这样的认识:Swing组件中的窗体通常是与容器相关联的,所以在一般情况下,建立完JFrame窗体后

  • 一篇文章带你入门Java数据结构

    目录 1.逻辑结构和物理结构 2.顺序结构,链式结构,栈,队列,二叉树 二叉树 普通二叉树: 满二叉树: 完全二叉树: 平衡二叉树: 排序二叉树: 二叉树的遍历: 总结 1.逻辑结构和物理结构 逻辑结构:    集合: 数据与数据之间没有任何关系 线性: 一对一关系 树型: 一对多关系 图型: 多对多关系 物理结构: 顺序结构(数组): 链式结构(链表): 2.顺序结构,链式结构,栈,队列,二叉树 顺序结构: 可扩容数组,底层用数组实现,顺序排列,标号连续,内存空间连续 优缺点: 查询速度快,在

随机推荐