当前位置: 首页 > article >正文

JAVA学习*Object类

Object类

Object类是所有类的父类
类中有一些方法(都需要掌握)
在这里插入图片描述

toString()方法

在学习类的对象的时候有介绍过了,当我们重新给此方法就会打印类与对象的信息

equals()方法

在这里插入图片描述
在Java中的比较,
如果==左右两侧是基本类型变量,比较的是变量中值是否相同。
如果==左右两侧是引用类型变量,比较的是引用变量地址是否相同。
如果要比较引用类型指向的值相同,需要重写equals()方法。

代码展示:

import java.util.Objects;
public class Student {
    private String name;
    private int age;
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class Test {
    public static void main(String[] args) {
        Student stu1 = new Student("lisi",18);
        Student stu2 = new Student("lisi",18);
        System.out.println(stu1 == stu2);
        System.out.println(stu1.equals(stu2));
        System.out.println("----------");
        String str1 = new String("abc");
        String str2 = new String("abc");
        System.out.println(str1 == str2);
        System.out.println(str1.equals(str2));
    }
}

输出:
false
flase
----------
false
true

代码解释:

1、对于对象,== 比较的是引用,即是否指向同一内存地址。Student是类stu1和stu2是引用变量,分别引用 Student 类创建的对象。
2、用equals()方法,当没有重写equals()方法时,调用父类Object类的equals()方法,比较的是两个地址是否相同,而非指向的内容是否相同。
3、为了能比较指向的内容是否相同,需要重写equals()方法。
(可以借助编译器生成)

	@Override
	//进行了比较合理性的判断
    public boolean equals(Object o) {
        if (this == o) return true;//自己比自己
        if (o == null || getClass() != o.getClass()) return false;//为空和类型不相同,返回false
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

此时之前的输出结果发生变化

输出:
false
true
----------
false
true

4、为什么String类的equals()方法比较的是指向的内容?因为String本身已经重写了equals()方法。

hashCode()方法

源码:

public native int hashCode();

我们认为两个名字相同,年龄相同的对象,将存储在同⼀个位置。当没有重写hashCode()方法时,他们的hash值不相同。
我们需要重写hashCode()方法。
(可以借助编译器生成)

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

其他关于hashCode()方法知识后续在讲。

其他方法之后学习中介绍

总结

对于我们自定义的类时,我们最好通过编译器重写toString()方法、equals()方法等。
在这里插入图片描述


http://www.kler.cn/a/599767.html

相关文章:

  • python3面试题23个(设计模式、面向对象、正则)
  • Typora安装使用教程 简单易用的Markdown编辑器
  • 解决思科交换机无法访问局域网外设备
  • C++学习之路,从0到精通的征途:string类
  • 深入理解Spring框架:核心概念与组成剖析
  • C++题目
  • uv - reference [官方文档翻译]
  • 【嵌入式学习2】内存管理
  • GitLens with `Commit Graph`
  • 使用Python调用Jenkins Api之获取构建日志使用说明文档
  • 两个手机都用流量,IP地址会一样吗?深入解析
  • Excel第41套全国人口普查
  • 在Spring Boot中,可以通过实现一些特定的接口来拓展Starter
  • 安全上网沙箱:多方面解决政企私的上网问题
  • 2025-如何创建自己的电商网站
  • Linux 系统关机和重启指令
  • Spring Boot项目快速创建-开发流程(笔记)
  • JAVA_数据结构_栈和队列
  • CSS 中text - shadow和box - shadow原理、属性的使用方法及区别
  • 鸿蒙进行视频上传,使用 request.uploadFile方法