0
点赞
收藏
分享

微信扫一扫

【java核心卷笔记】Object类及其方法

楠蛮鬼影 2022-05-05 阅读 81
java

  Object:所有类的超类

Object类是java是所有类的始祖,在java中每个类都默认拓展了Object。

Object类型的变量:

可以使用Object类型的变量引用任何类型的对象。

在java中只有基本类型(数值,字符,布尔)不是对象。所有数组类型都继承了Object类。

Object obj=new Employee();

Object类型的变量只能用作各种值的一个泛型容器。想对其中的内容进行具体操作,还需要清楚对象的原始类型,并进行相应的强制类型转换。

equals方法:检测一个对象是否等于另一个对象。

不过,经常需要根据字段检测对象是否相等。

 getClass方法返回一个对象所属的类,只有两个对象属于同一个类时,才有可能相等。

Objects.equals(a,b):

如果两个参数都为空,返回true;如果两个参数有一个为空,返回false

否则,如果两个参数都不为null,则调用a.equals(b)

如果在子类中定义equals方法,首先调用超类的equals,如果检测失败,就不可能相等。

编写equals方法的建议:

 如果在子类中重新定义equals,就要调用super.equals(other)

hashcode方法:

hashcode(散列码)是由对象导出的一个整型值。

hashcode是没有规律的,两个不同对象hashcode基本上不会相同。

 hashcode方法定义在Object类中,因此每个对象都有一个默认的散列码,其值由对象的存储地址得出。

如果重新定义了equals方法,就必须为用户可能插入的对象重新定义hashcode方法。

当需要组合多个散列值时,可以调用Objects.hashcode

equals与hashcode定义必须相容。如果定义Employee.equals比较员工的ID,那么hashcode就需要ID,而不是姓名或存储地址。(两个相等的对象返回相等的散列码)

 toString方法:

绝大多数的tostring都遵循:类名[A="a1",B="b1",.....]的格式

优化:类名可以用getClass.getName获取。

子类应定义自己的toString方法,如果超类使用了getClass().getName(),子类只需要调用super.toString()即可。

 toString方法的调用:

(1)字符串拼接:“ ..”+对象

(2)System.out.println(对象)

建议:应为每一个类添加toString方法,便于调试。

数组打印:

举报

相关推荐

0 条评论