边学边记——Java中的Object类(包含关于toString方法和equals方法的详解)

目录

一.定义

二.特性

1.参数统一化

2.Object类是所有类的父类

(1).toString方法

(2).equals方法


一.定义

  • java.long.Object类是Java中所有类的共同父类,不需要显示extends,只要是Java的类,Object都是他们的父类。
  • Object类是参数的最高统一类型。

二.特性

1.参数统一化

除了可以接受所有类的对象以外(因为Object是Java中所有类的默认父类),Object还可以接收所有的引用数据类型(接口和数组)。

2.Object类是所有类的父类

正因为Object类是所有类的父类,因此Object类中的所有方法,子类中都有。

(1).toString方法

用来获取一个对象的信息。

当将类的对象直接传入println方法进行输出时,默认就会调用toString(所有对象都具备的方法)。

eg:

Object类中默认的toString方法的源码: 

小技巧:在IDEA中查看源码——ctrl+鼠标左键点击。 

问:假如我们此时想改变默认输出,不再输出这个地址值而是输出对象的具体属性值,那该怎么做?

答:只需要在对应类中重写toString方法即可。

如:在Student类中重写toString方法。

 此时的运行结果:

(2).equals方法

对象比较相等和引用数据类型进行内容比较时,使用equals方法。

关于"==" :在Java中,"==" 操作符返回布尔值,比较两个变量的"数值"是否相等。

变量的存储:

  • 对于基本类型,变量存储的就是具体的内容值。
  • 对于引用类型,存储的是对象的地址值。

注意:"==" 比较两个引用数据类型,实际就是在比较他俩的地址值是否相等,不会比较内容。

eg:

Java中默认的equals方法的源码:

默认的equals方法的作用其实和 "==" 是一样的,因此,如果我们想比较某个对象的属性值,需要在该对象的类中重写equals方法。 

在Student类中重写equals方法: 

注意:此时重写的equals方法最后返回时使用的equals方法是String类中的,即作用等同于默认的 "==" 。 

验证: 

注意: 

  • 千万小心,"=="在字符串对象和包装类对象中的使用。(在包装类中0~128为true,超出为false)
  • 只要使用对象的比较,就使用equals 方法,不使用"=="。
  • Object类默认的equals方法其实是和 "=="是一样的。若要进行同一个类的两个不同对象属性值的比较相等,覆写equals方法。JDK的所有常用类型:String,包装类,集合类,都已经覆写了equals方法。

覆写思路: 

  • 是不是同一个对象。
  • 是不是同一个类型。
  • 向下转型,比较两个对象具体的属性值。

面试小问题:

问:请说出:"==" 和 equals 的区别?

答:

1. "==" 比较的是两个变量的数值是否相等,对于基本类型,比较的就是具体保存的数值,对于引用类型的地址是否相同。

2. equals 方法是Object类的默认方法,自定义覆写 equals 方法可以按照属性值来比较两个对象的内容是否相等。

总结:引用数据类型:"==" 比较的是地址,equals 比较的是两个对象的属性值是否相等。

如有建议或想法,欢迎一起交流学习~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值