Object类概述及其常用方法详解(toString与equals的重写,hashcode,finalize,clone)

 

我们查看API发现Object类只有一个构造方法。

这下知道为啥万事万物皆对象了吧,因为所有类的最终父类 都是Object类

getClass方法我在反射的那篇有讲,此篇会讲解几个常用的方法,余下的会包括在线程那篇进行详细讲解

int hashcode()方法         

 返回值是对象的哈希码值,哈希码值:该对象的内部地址值

1.在某次程序执行期间,对统一对象的hashcode()都是打印出相同值

 如果根据equals(object) 方法,两个对象=相等,那么这两个对象调用hashcode()方法得到的hashcode值

一定要相等

2. 如果根据equals(object) 方法,两个对象相等,那么这两个对象调用hashcode()方法得到的hashcode值

一定要相等

3.如果根据equals(object) 方法,两个对象不相等,那么这两个对象调用hashcode()方法得到的hashcode值

不一定要相等。但是我们要意识到,生成不同的整数结果的话有利于提高哈希表的性能

示例为下

控制台打印如下

 

String toString()  方法

返回值是字符串,组成结构如图 

      • 一般来说我们打印toString方法的返回值,结果应该是一个简明扼要的表达,容易让人阅读。 所以,建议所有子类覆盖此方法。

      • 比如学生类我们就可以重载为如下

      • 再次打印就是如下形式

      • 直接输出一个对象,其实就是输出其toString()方法的返回值

 boolean equals(Object obj) :指示其它某个对象是否与此对象相等

打印结果如下

equals方法,默认情况下比较的是地址值,一般来说意义不大,所以我们一般要重写为比较其成员变量值

那么怎样重写呢?我们以只有name与age两个属性的Student类为例

此时再把s1,s2用equals方法比较,就返回true了,如下

优化后如下,此处对代码有所优化,看看就行,以后代码敲多了就懂了,此处不做过多讲解

alt+shift+s+s自动生成为equals最终版代码,毕竟大佬写的

 

大概意思就是:算了,想弄懂的给你们个网址 https://www.cnblogs.com/Smina/p/7189427.html 这里讲的比较详细

Object clone()方法

返回调用该方法的对象的一个副本

演示如下

注意:如以下代码,调用clone方法的对象要实现cloneable,如下

 看如下代码,猜猜打印结果:

结果如下:


结论:对象调用clone方法得到的副本对象的属性跟原对象相同,但是指向内存的地址并不相同。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我才是真的封不觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值