概述
Object类,及其常用的方法的覆盖重写(toString,equals)
- Object类
- toString()方法
- equals()方法
- Objects类中的equals()方法
Object类
类Object是类层次结构的根(最顶层)类。每个类都使用了Object类作为父类。所有对象(包括数组)都实现这个类的方法。
toString()方法
- 作用:打印对象的信息
- 重写前:打印的是包名类名@地址值
- 重写后:打印的是对象中的属性值
@Override
public String toString() {
return "Person{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
类ArrayList、类Scanner中覆盖重写了toString方法,所以,它调用toString时,才能直接打印出字符串。
类Random没有覆盖重写toString方法,所以它调用toString时,打印的是地址值。
equals()方法
作用:比较两个对象
重写前:比较的是对象的地址值
重写后:比较的是对象中的属性值
==:比较运算符
基本数据类型:比较的是值。
引用数据类型(类):比较的是两个对象的地址值。
但由于equals()方法中传递的参数是Object型的,相当于向上转型了,就存在这样的一个问题:多态中,多态定义的父类对象无法使用子类特有的属性/方法。所以需要对Object进行向下转型。
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
//getClass() != o.getClass()使用反射技术,判断o是否为子类型 等效于 instanceof
Objects类中的equals()方法
Objects的方法不会抛出空指针异常,加了一些健壮性的判断。
boolean flag=Objects.equals(s1,s2);//不会异常
String s1=null;
String s2="abc";
boolean b=s1.equals(s2);//NullPointerException null是不能调用方法的,会抛出空指针异常
最后
以上就是精明纸鹤为你收集整理的36、Object类,及其常用的方法的覆盖重写(toString,equals)的全部内容,希望文章能够帮你解决36、Object类,及其常用的方法的覆盖重写(toString,equals)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复