Java Object类方法介绍

news2024/9/23 13:29:16
    Object作为顶级类,所有的类都实现了该类的方法,包括数组。
查询Java文档:

1、object.eauqls():

    其作用与 == 有些类似。
==:
    是一个比较运算符,而不是一个方法。
    ①可以判断基本类型,也可以判断引用类型。
    ②若判断基本数据类型,则判断他们的值是否相同。
    ③若判断引用类型,则判断他们的地址是否相同,即判断他们是不是同一个对象。
    ④只要有基本数据类型,那么就是判断值是否相等。
equals:
    是object类中的方法,不是运算符,只能判断引用类型。
    ①默认判断地址是否相同。
    ②子类往往都会将其重写,用来判断对应内容是否相等。
    例:
    这是Object中equals的源码:
    
    Integer类将equals()改写为:
    
例:用== 和equals()来判断两个Integer对象是否相等:
Integer i1 = new Integer(1000);
Integer i2 = new Integer(1000);
i1 == i2;     //false  因为==判断引用类型时,判断他们地址是否相同
i1.equals(i2);//true   而Integer对equals()方法进行重写,所以是判断两个对象的值是否相等,因此正确。

2、hashCode():

1、提高具有哈希结构的容器的效率。
2、两个引用,如果指向的是同一个对象,则哈希值是一样的。
3、两个引用,如果指向的是不同的对象,则哈希值是不一样的。
4、哈希值主要是根据地址号来的,但是不能完全将哈希值等价于地址。
5、Object的hashcode 方法是本地方法,也就是用 c 或 c++ 实现的,该方法直接返回对象的内存地址。
        详情: java Object的hashCode

3、toString():

1、默认返回:
                全类名(包名+类名) + @ + 哈希值的十六进制。
    源码:
    
2、子类往往会重写该方法,用来输出对象的属性信息。
3、重写该方法后,打印或拼接对象时,都会自动调用该对象的toString()方法。
4、直接输出一个对象时,toString()方法会被默认调用

4、finalize():

    当垃圾回收器确定不存在该对象的更多引用时,由垃圾回收器自动调用此方法。
1、当对象被回收时,系统自动调用该对象的finalize()方法。子类可以重写该方法,做一些释放资源的操作。
2、什么时候对象会被回收:
        当一个对象没有任何引用时,jvm就认为该对象是一个垃圾对象,就会使用垃圾回收机制销毁该对象,
      在销毁该对象前,会先调用finalize()方法。
3、若不重写该方法,则在销毁某个对象前,会自动调用object的finalize()方法,即什么也不做。
4、并不是一个对象没有引用之后立刻就会被回收:
        如果一个对象一旦没有引用,就立刻被回收,意味着垃圾回收器会时时刻刻监控,这样浪费资源,效率低。
      垃圾回收器有一个自己的算法,会根据算法来回收。
5、也可以通过System.gc()主动触发垃圾回收机制。
        System.gc():作用为立即运行垃圾回收器。
        且垃圾回收器调用过程中,不会阻塞程序,程序会继续向后运行。

5、clone():

实现clone()的两种方式:
    a.在java语言中,如果需要实现深克隆,可以通过覆盖Object类的clone()方法实现,也可以通过序列化的方式来实现。
    b.如果引用类型里面还包含很多引用类型,或者内层引用类型的类里面又包含引用类型,使用clone方法就会很麻烦。
        这时我们可以用序列化的方式来实现对象的深克隆。
object规范中clone的约定:(不是绝对的要求,只是一个实现clone方法时应该遵守的规范标准)
    x.clone() != x 返回 true;                即二者不是同一个对象,地址不同
    x.clone().getClass() == x.getClass() 返回 true;                即二者属于同一个类
    x.clone.equals(x) 返回 true,自定义对象应重写equals方法。            即二者通过equals()判断相同,也就是值相同
    按照约定, 克隆对象与原对象地址地址不同,所属 同一个类,两个对象 对应实例各字段的值相同,即克隆的对象不依赖于原对象,也就是 深拷贝
按照约定,clone返回的对象应该通过 super.clone() 获得。
默认使用父类clone()方法的缺陷:
    如果克隆对象中包含的域引用了可变的对象,上述这种简单的 clone 实现可能会导致灾难性的后果。
    因为默认clone()是浅克隆,如下图,school类中有两个属性:
        分别为String类型和Student[]类型
    
    使用clone克隆一份school1给school2
    
    可见,所有的引用数据类型,String类型的name中的value值,Student[]类型的数组
    的值都是一样的,也就是说指向同一个地方。
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1706646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】构造函数、析构函数、拷贝构造与运算符重载

文章目录 1.类的六个默认构造函数2.构造函数2.1特性2.1.1 函数名与类名相同2.1.2. 无返回值(不能写void)2.1.3. 对象实例化时编译器自动调用对应的构造函数2.1.4 构造函数可以重载2.1.5编译器生成默认的构造函数2.1.6编译器生成的默认构造有何用&#xf…

webserver服务器从零搭建到上线(九)|EpollPoller事件分发器类(一)——详解成员变量、简述成员方法

在本节中&#xff0c;我们一起来仔细探讨一下EpollPoller类。该类可以说是muduo库中最最核心的类了&#xff0c;一定要搞懂&#xff01; 文章目录 私有成员using ChannelList std::vector<Channel*>looping_、quit_threadId_pollReturnTime_、poller_wakeup_fd、wakeupC…

AI赋能:人工智能技术驱动下的品牌海外市场精准分析与营销策略

随着全球化的加速和科技的飞速发展&#xff0c;品牌在海外市场的竞争愈发激烈。为了在竞争激烈的国际市场中脱颖而出&#xff0c;品牌需要更深入地了解海外消费者的行为、趋势和偏好。在这个过程中&#xff0c;人工智能&#xff08;AI&#xff09;技术以其强大的数据处理和分析…

3、python安装-linux系统下

安装前置依赖软件&#xff0c;安装完成后&#xff0c;打开官网&#xff0c;下载linux系统下的python安装包&#xff1a; 选择最新的版本 点击最新版本&#xff0c;进入版本对应的界面&#xff0c; 选择第一个进行源码的编译&#xff0c;右键选择复制连接地址&#xff0c; 回到终…

大数据面试题 —— Hive

目录 Hive 是什么为什么要使用 HiveHive 的优缺点Hive的实现逻辑&#xff0c;为什么处理小表延迟比较高你可以说一下 HQL 转换为 MR 的任务流程吗 ***你可以说一下 hive 的元数据保存在哪里吗 ***Hive与传统数据库之间的区别Hive内部表和外部表的区别 ***hive 动态分区与静态分…

Generate Anything Anywhere in Any Scene #论文阅读

URL https://arxiv.org/pdf/2306.17154 TD;DR 2023 年 6 月 Wisconsin 的文章。围绕 ip 保持做的扩展任务&#xff0c;核心目标是对指定 ip 可以生成任意大小的&#xff08;指定 ip&#xff09;、任意背景的图片&#xff0c;同时可以通过 bbox 控制物体位置和多物体生成。主…

当客户说价格比市场还要高,就这么回怼!

外贸客户说:价格高出市场价30%。我们给客户卖产品&#xff0c;难免会有讨价还价这回事&#xff0c;讨价还价也是一门技术活&#xff0c;得摸透客户心理还要在嘴皮子上占优势&#xff0c;局面还得拿到主动权… 所以今天给大家分享一些讨价还价的思路和要点&#xff0c;希望大家用…

若依新增页面,在左侧显示菜单栏的页面,可点击

选择指定的某个目录下 菜单名称&#xff0c;路由地址&#xff0c;组件路径这几个是必填的&#xff0c;其他的暂时就不用管了。 菜单名称&#xff1a;就是显示到左侧目录中的名称。 路由地址&#xff1a;自定义&#xff0c;一般写页面名称就可以。 组件路径&#xff1a;根据前端…

神奇的一万

在代码界&#xff0c;有个神奇的存在&#xff0c;它叫一万&#xff1a;eval&#xff08;&#xff09;。 这个神奇的一万&#xff0c;在python和JavaScript中都存在&#xff0c;作用也是基本相同的。 Python中的eval函数能将字符串str当成有效的表达式来求值并返回计算结果。 …

四川易点慧电商抖音小店:引领潮流,打造电商新标杆

在数字化浪潮席卷全球的今天&#xff0c;电子商务以其独特的魅力和优势&#xff0c;正逐渐成为推动经济发展的重要力量。四川易点慧电子商务有限公司抖音小店&#xff0c;作为电商领域的一股新生力量&#xff0c;以其创新的经营理念和卓越的服务品质&#xff0c;迅速赢得了市场…

弘君资本炒股技巧:股票定向增发是什么意思?是好是坏?

股票定向增发是指已上市的公司向指定的组织或者个人投资者额外发行股份募集资金的融资方法&#xff0c;发行价格为发行前某一阶段的平均价的必定比例&#xff0c;增发的价格不得低于前二十个买卖日股票均价的80&#xff05;。 例如&#xff0c;个股定增前二十个买卖股票平均价为…

降压芯片SL3036耐压100V 电机驱动板应用48-85V降压12V 1A以内

降压芯片SL3036以其卓越的耐压特性&#xff0c;能够在高达100V的电压环境下稳定运行&#xff0c;为电机驱动板等应用提供了强大的电源支持。这款芯片在电机驱动板中发挥着至关重要的作用&#xff0c;特别是在那些需要48-85V宽范围输入电压并降压至稳定12V输出的场景中&#xff…

Echarts圆环图偏移后 中心文字居中对齐实现

像上图中这样圆环图并不在div的中间时&#xff0c;中心的文本需要居中展示 一开始用left百分比但数据一旦变长或变短就会偏移 像这样 实在是太不美观了 所以我们这里使用动态的left通过文本的长度来计算 /*** 计算文本宽度* param {String|Number} text* param {String} font*…

再创佳绩丨达梦数据库一体机荣获2024数字中国创新大赛·信创赛道总决赛一等奖

5月24日&#xff0c;第七届数字中国建设峰会在福州盛大开幕&#xff0c;峰会内容安排包含开幕式、主论坛、分论坛、数字中国创新大赛、现场体验区及成果发布和专业工作会议等。武汉达梦数据库股份有限公司(以下简称达梦数据)受邀参加并在展、会、赛等多个环节深度参与。达梦全栈…

李廉洋:5.29黄金原油持续震荡,今日美盘行情走势分析及策略。

黄金消息面分析&#xff1a;美联储理事鲍曼周二表示&#xff0c;她支持要么先等等再开始放缓缩减资产负债表&#xff0c;要么采取比本月早些时候宣布的更温和的放慢缩表进程。鲍曼认为商业银行准备金水平仍然充足&#xff0c;这让官员们有更多时间来推进缩表进程。“在准备金接…

六一儿童节创意项目:教你用HTML5和CSS3制作可爱的雪糕动画

六一儿童节快到了&#xff0c;这是一个充满童趣和欢乐的日子。为了给孩子们增添一份节日惊喜&#xff0c;我们决定用HTML5和CSS3制作一个生动有趣的雪糕动画。通过这个项目&#xff0c;不仅能提升你的前端技能&#xff0c;还能带给孩子们一份特别的节日礼物。无论你是前端开发新…

unity接入live2d

在bilibili上找到一个教程&#xff0c;首先注意一点&#xff0c;你直接导入那个sdk&#xff0c;并且打开示例&#xff0c;显示的模型是有问题的&#xff0c;你需要调整模型上脚本的一个枚举值&#xff0c;调整它的渲染顺序是front z to我看教程时候&#xff0c;很多老师都没有提…

Python魔法之旅-魔法方法(01)

目录 一、概述 1、定义 2、作用 二、主要应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类…

SpringJDBC

1.前言 Spring JDBC可以帮助开发者节省大量开发工作 自动去处理一些低级细节 比如&#xff1a;异常处理、打开和关闭资源(Connection、PreparedStatement、Statement、ResultSet) 需要下载的jar包&#xff1a; spring-jdbc(普通jar包、源码jar包)由于没有依赖其他的jar包 所以只…

Kubernetes——监听机制与调度约束

目录 前言 一、监听机制 1.Pod启动创建过程 2.调度过程 1.指定调度节点 1.1强制匹配 1.2强制约束 二、硬策略和软策略 1.键值运算关系 1.硬策略——requiredDuringSchedulingIgnoredDuringExecution 2.软策略——preferredDuringSchedulingIgnoredDuringExecution …