11.23学习知识点

1、Object类
概念:所有类的超类,所有对象都实现了Object类的方法
1.1 equals
public boolean equals (Object object)
对比两个对象地址值是否相等,对比地址值没有意义,需要重写,使其比较属性值
重写:
利用ide自动生成,code–>Generate–>toString
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}

if (obj == null) {
return false;
}

if (obj instanceof Person) {
// 向下转型,使用子类的属性和方法
Person p = (Person) obj;
boolean b = this.name.equals(p.name) && this.age == p.age && this.sex.equals(p.sex); (如果name为null,则会报空指针异常,可使用Objects中的equals方法代替Object中的equals方法,Objects中的equals是容忍空指针的)
return b;
}
return false;
}
语法:对象.equals(对象)
1.2 toString
直接打印对象名,其实就是调用对象的toString方法,返回值是对象的地址值;打印地址值没有意义,需重写Object类的toString方法
利用ide自动生成,code–>Generate–>toString
@Override
public String toString() {
return “Person{” +
“name=’” + name + ‘’’ +
“, age=” + age +
“, sex=’” + sex + ‘’’ +
‘}’;
}
2、Objects类
2.1 equals方法
语法:
Objects.equals(Object a, Object b)
底层也是根据Object.equals实现的
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}

Guess you like

Origin blog.csdn.net/weixin_44079370/article/details/121515444