java语言object类toString方法和equals方法的用法

java语言object类toString方法和equals方法的用法

toString和equals都属于object的成员方法 toString用于输出,equals用于判断两个对象是否相等
1.toString() 方法 定义返回为String类型
返回对象的字符串表示形式。

API中的解释为:public String toString()返回对象的字符串表示形式。 一般来说, toString方法返回一个“textually代表”这个对象的字符串。 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。
该toString类方法Object返回一个由其中的对象是一个实例,该符号字符`的类的名称的字符串@ ”和对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:

getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
结果 :对象的字符串表示形式。

2.equals(Object obj) 定义返回值类型为boolean类型,Object 可以接受任何形式的参数,
一些其他对象是否等于此。简单来说就是判断两个对象是否相等,相等返回值为ture,可以重定义方法。

API中的解释为:public boolean equals(Object obj)指示一些其他对象是否等于此。
equals方法在非空对象引用上具有的特性:

自反性 :对于任何非空的参考值x , x.equals(x)应该返回true 。
它是对称的 :对于任何非空引用值x和y , x.equals(y)应该返回true当且仅当y.equals(x)回报true 。
传递性 :对于任何非空引用值x , y和z ,如果x.equals(y)回报true个y.equals(z)回报true ,然后x.equals(z)应该返回true 。
它是一致的 :对于任何非空引用值x和y ,多次调用x.equals(y)始终返回true或始终返回false ,没有设置中使用的信息equals比较上的对象被修改。
对于任何非空的参考值x , x.equals(null)应该返回false 。
该equals类方法Object实现对象上差别可能性最大的相等关系; 也就是说,对于任何非空的参考值x和y ,当且仅当x和y引用相同的对象( x == y具有值true )时,该方法返回true 。

请注意,无论何时覆盖该方法,通常需要覆盖hashCode方法,以便维护hashCode方法的通用合同,该方法规定相等的对象必须具有相等的哈希码。

参数 :obj - 与之比较的参考对象。
结果 :true如果此对象与obj参数相同; false否则。

2.分析

一、首先说toString
1,创建一个person类,方便主方法进行调用
person类
2.在main方法中创建person对象并赋值,然后进行输出比较
主方法
3.生成结果生成结果
发现输出的结果是,包+类+@+对象的哈希码形式。
4.在person类中重写toString方法。
重写toString
5.重写后输出结果
在这里插入图片描述
发现重写后System.out.println(person);语句输出的结果为toString方法中的返回内容。我们这里不妨进入println方法内部查看具体原因,鼠标放在println点击ctrl+d后,继续进行此操作,最终发现toString方法的内容如下图所示。
在这里插入图片描述
所以在没有重新定义toString方法时,为什么输出这样的内容就可以解释了。
二、equals方法
1.首先”=="在java是判断两个对象的内存地址是否相同。
在这里插入图片描述
这时的输入结果为false,这就引起我们思考如何判断两个对象是否相等。

2.使用equals方法判断发现输出结果仍为false,这时我们按住ctrl+d进入equals方法内部查看。
在这里插入图片描述
equals函数结构
在这里插入图片描述
通过以上内容发现equals方法内部判断使用依然是“==”。这就需要我们重定义equals方法。重定义equals要遵循五种原则
1.自反性:对于任何非空的参考值x , x.equals(x)应该返回true。
2.对称性:对于任何非空引用值x和y , x.equals(y)应该返回true当且仅当y.equals(x)回报true 。
3.传递性:对于任何非空引用值x , y和z ,如果x.equals(y)回报true个y.equals(z)回报true ,然后x.equals(z)应该返回true 。
4.一致性:对于任何非空引用值x和y ,多次调用x.equals(y)始终返回true或始终返回false ,没有设置中使用的信息equals比较上的对象被修改。
5.非空性:对于任何非空的参考值x , x.equals(null)应该返回false 。
3.重新定义equals
在这里插入图片描述
重新定义后的方法,满足了五种原则同时判断了name和age是否相同,int类型和String类型可以用“= =”判断值是否相等。这时再次调用equals输出结果为true。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值