我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java深入探究Object类的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java深入探究Object类的方法

本文主要带大家看看Object类中一些常用方法的API文档的介绍和JDK中的源码。

1.equals方法

1.API中equals方法的介绍

2.==和equals 的对比

  • == 既可以判断基本类型,又可以判断引用类型,如果判断的是基本类型,判断的是值是否相等,如果判断的是引用类型,则判断的是地址是否相等,即判断是不是同一个对象。
  • equals 方法是 Object 类中的方法,只能判断引用类型,默认的是判断地址是否相等,子类中往往会重写该方法,重写后用于判断内容是否相等

我们可以看看 Object,String 和 Integer中的 equals 方法的 JDK 源码。

Object o = new Object();
o.equals(1);//Object类中的equals方法
System.out.println("hello".equals("hello"));//String中的equals方法
Integer integer = new Integer(5);
System.out.println(integer.equals(5));//Integer中的equals方法
//将光标放在equals方法上,按Ctrl同时按鼠标左键,就可跳转到String和Integer中的equals方法的JDK源码。
//Object类中的equals方法
public boolean equals(Object obj) {
        return (this == obj);//判断是不是当前对象
}
//String类中重写的equals方法
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;//首先判断是不是当前对象
        }
        if (anObject instanceof String) {//判断当前类型是不是字符串类型
            String anotherString = (String)anObject;//向下转型
            int n = value.length;//保存传入字符串的长度
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])//一个一个字符比较
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }
 //Integer类中重写的equals方法
public boolean equals(Object obj) {
        if (obj instanceof Integer) {//判断当前类型是不是Integer类型
            return value == ((Integer)obj).intValue();//向下转型
        }
        return false;
    }

2.hashCode方法

1.API中hashCode方法的介绍

2.提高具有哈希结构容器的的效率。

3.两个引用,如果指向的同一个对象,哈希值一样,指向不同对象,哈希值就不一样。

4.哈希值主要根据地址来的,但不能将哈希值等价于地址。

3.toString方法

1.API中toString方法的介绍

2.默认返回:全类名(包名+类名)+@+哈希值的十六进制。

3.往往重写toString方法,用于返回对象属性。

4.当直接输出对象时,toString方法会被默认的调用。

//JDK中的toString方法源码
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    //返回全类名(包名+类名)+@+哈希值的十六进制
    }
//重写toString方法
 @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }//往往重写toString方法,用于返回对象属性。

4.finalize方法

1.API中finalize方法的介绍

2.对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法,做一些释放资源的操作。

3.当某个对象没有引用时,jvm就会使用垃圾回收机制来销毁此对象,销毁对象前会先调用finalize方法。

4.垃圾回收机制的调用,是由系统的GC算法来决定的,也可通过System.gc()主动触发。

到此这篇关于Java深入探究Object类的方法的文章就介绍到这了,更多相关Java Object类内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java深入探究Object类的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android视图绑定方法深入探究

这篇文章主要介绍了Android视图绑定方法,通过视图绑定viewBinding功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个XML
2023-01-30

深入浅析Java中的Object类

今天就跟大家聊聊有关深入浅析Java中的Object类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java作为一个庞大的知识体系,涉及到的知识点繁多,本文将从Java中最基本的类j
2023-05-31

深入探究Java原型模式的魅力

Java原型模式是一种创建型设计模式,它通过复制现有对象的实例来创建新的对象实例,在本篇博客中,我们将详细介绍Java原型模式的原理、实现方式、优缺点以及适用场景等方面,需要的朋友可以参考下
2023-05-20

Python数据类型转换函数的原理与方法的深入探究

深入了解Python数据类型转换函数的原理与方法,需要具体代码示例Python是一种简洁而强大的编程语言,它提供了丰富的数据类型和灵活的类型转换函数,使得数据处理更加便捷。在本文中,我们将深入探讨Python中的数据类型转换函数的原理和使
Python数据类型转换函数的原理与方法的深入探究
2024-01-20

HTTP状态码及其分类的深入探究

深入了解HTTP协议状态码及其分类HTTP协议状态码是在HTTP请求和响应过程中,用来表示服务器对请求的处理结果的一种标识。状态码由三位数字组成,分为五个类别,分别是1xx、2xx、3xx、4xx和5xx。在本文中,我们将深入了解这些状态码
HTTP状态码及其分类的深入探究
2023-12-26

深入探究Go语言结构体方法的定义

深入理解Go语言结构体定义的方法,需要具体代码示例引言Go语言是一门简洁高效的编程语言,在其核心特性中,结构体是一个非常重要的概念。与其他编程语言不同,Go语言的结构体不仅可以包含属性字段,还可以定义与结构体相关的方法。这种方法是通过在
深入探究Go语言结构体方法的定义
2024-02-02

深入探究JavaScript中WeakMap的原理与用法

这篇文章主要对JavaScript中的WeakMap进行深入探究,包括它的原理、用法和注意事项等,文中的示例代码简洁易懂,需要的小伙伴可以参考一下
2023-05-20

JavaScript原型与原型链深入探究使用方法

js中的原型与原型链应该是老生常谈的话题了,在前端面试中基本都是必问的一个问题,但是很多人还是稀里糊涂的,只知道其表层含义。本文将带大家深入了解JavaScript中的原型与原型链,感兴趣的可以学习一下
2022-11-13

C语言指针和数组深入探究使用方法

在C语言和C++等语言中,数组元素全为指针变量的数组称为指针数组,指针数组中的元素都必须具有相同的存储类型、指向相同数据类型的指针变量。指针数组比较适合用来指向若干个字符串,使字符串处理更加方便、灵活
2022-11-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录