从零学Java Object类

news/2024/6/1 20:08:47 标签: java, 开发语言

Java Object类

文章目录

  • Java Object类
    • Object类
    • Object类中的方法
      • 1 getClass()方法
      • 2 hashCode()方法
      • 3 toString()方法
      • 4 equals()方法
        • 面试题: == 和 equals 方法的区别?
      • 5 finalize()方法(JDK1.9放弃 了解即可)

Object类

所有类的直接或间接继承Object,位于继承树的最顶层。

任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承。

Object类中所定义的方法,是所有对象都具备的方法。

Object类型可以存储任何对象。

  • 作为参数,可接受任何对象。
  • 作为返回值,可返回任何对象。

Object类中的方法

1 getClass()方法

public final Class<?> getClass() {}

返回引用中存储的实际对象类型 (类对象)。

应用:通常用于判断两个引用中实际存储对象类型是否一致。

2 hashCode()方法

public int hashCode(){}

返回该对象的十进制的哈希(hash)码值

哈希算法根据对象的地址或字符串或数字计算出来的int类型的数值。

3 toString()方法

public String toString(){}

返回该对象的字符串表示形式。

可以根据程序需求重写该方法,如:展示对象各个属性值。

重写toString()方法:

java">@Override
public String toString() {
    return "Student{" +
        "name='" + name + '\'' +
        ", age=" + age +
        ", gender='" + gender + '\'' +
        ", score=" + score +
        '}';
}

4 equals()方法

public boolean equals(Object obj){}

默认实现为(this == obj),比较两个对象地址是否相同。

可进行重写,比较两个对象的内容是否相同。

重写equals()方法:

java">@Override
public boolean equals(Object obj) {
    //1 判断obj是否为null
    if (obj==null) {
        return false;
    }
    //2 判断this和obj地址相同
    if (this == obj) {
        return true;
    }
    //3 判断obj是否为Student类型
    if (obj instanceof Student) {
        //4 向下转型
        Student s = (Student) obj;
        //5 判断属性值是否相同
        if (this.name.equals(s.name) && this.gender.equals(s.gender) && this.age==s.age) {
            return true;
        }
    }
    return false;
}
面试题: == 和 equals 方法的区别?

res:

1 基本类型 == 比较的是值, 引用类型 equals 方法比较的是地址
2 如果equals方法不能满足子类的需求, 可以重写equals方法

5 finalize()方法(JDK1.9放弃 了解即可)

当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列。

垃圾对象:没有有效引用指向此对象时,为垃圾对象。

垃圾回收: 由GC(Garbage Collector)销毁垃圾对象,释放数据存储空间。

自动回收机制:JVM自动回收所有垃圾对象。

手动回收机制:使用System.gc(); 通知JVM执行垃圾回收。

eg:

java">@Override
protected void finalize() throws Throwable {
    System.out.println(this.name+"被回收了");
}

Student student = new Student("阿丹",16,"女",100);
student = null;
System.gc();

res:

阿丹被回收了

http://www.niftyadmin.cn/n/5307501.html

相关文章

手拉手springboot3整合mybatis-plus多数据源

环境介绍 技术栈 springbootmybatis-plusmysql 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 17 Spring Boot 3.1.7 dynamic-datasource 3.6.1 mybatis-plus 3.5.3.2 加入依赖 <dependency><groupId>com.baomidou</groupId><arti…

Linux环境变量、export命令、env命令、$符号

一、环境变量 我们所使用的一系列命令本质上就是一个个的可执行程序 不管我们当前的工作目录在何处&#xff0c;命令都可以准确执行&#xff0c;这就是环境变量的作用&#xff0c;是借助环境变量中PATH的值来做到的&#xff0c;PATH记录了系统执行任何命令的搜索路径 环境变量…

快速入门Visual Studio 2022开发.Net Framework研发环境指南

IDE工具 Visual Studio 2022 Vs2022企业版 - VisualStudioSetup.exe Visual Studio Code VSCodeUserSetup-x64-1.66.2.exeVSCodeUserSetup-x64-1.67.0-insider.exe IDE环境 编程字体YaHei.Consolas YaHei.Consolas.1.12.ttf IDE插件 Visual Studio Code常用插件 Chinese…

2022年山东省职业院校技能大赛高职组信息安全管理与评估—开发测试服务器解析

任务5:开发测试服务器 目录 任务5:开发测试服务器 解题方法:

unity PDFRender Curved UI3.3

【PDF】PDFRender 链接&#xff1a;https://pan.baidu.com/s/1wSlmfiWTAHZKqEESxuMH6Q 提取码&#xff1a;csdn 【曲面ui】 Curved UI3.3 链接&#xff1a;https://pan.baidu.com/s/1uNZySJTW0-pPwi2FTE6fgA 提取码&#xff1a;csdn

项目整合积木报表-设计页面

项目整合积木报表-设计页面 <template><div><iframe id"dome" :srcsrc ></iframe></div> </template><script>export default {data(){return{src:configSrc.src"/jmreport/view/836138868821839872"}}} </…

BRC20 技术分析

文章目录 什么是 BRC20 ?brc20 白皮书。重点基于链上数据解析获取交易详情返回值如何将 16 进制转换为 字符串没有节点,如何获取数据?见证隔离如何解析出 BRC20 数据?最后如何快速搭建节点BRC20 Indexer

2024年Python面试题

面试是每一位求职者都要经历的过程&#xff0c;而对于Python开发者来说&#xff0c;掌握Python的基础知识和应用场景是至关重要的。以下是几个具有代表性的Python面试题&#xff0c;通过这些题目&#xff0c;我们可以一窥Python的深度和广度。 问题一&#xff1a;Python中的装…