Java中Object类中的常用方法
Java中Object类中的toString()和equals()方法
众所周知,object类在java中是所用类的超类,一个类都会之间或间接的继承该类,所以我们要了解object类中的两个常用方法对以后的学习理解也是十分有帮助的
toString()方法
作用: 打印对象的信息
原始object中的toString()方法:打印对象的包名类名@地址值
我们通过源码也可以直接看出:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
重写之后的toString() 方法:我们可以根据自己的需求将自己对象(Account为例)中的一些属性打印出来
public String toString() {
return "Account{" +
"id=" + id +
", name='" + name + '\'' +
", money=" + money +
'}';
}
equals()方法
作用: 就是为了比较两者之间是否相等并返回一个boolean值
原始object中的equals()方法:比较对象的地址值是不是一样的
我们通过源码也可以直接看出:
public boolean equals(Object obj) {
return (this == obj);
}
但是我们在日常创建的对象中,极大多数都是两个在堆内存地址值不同的对象,我们比较他们的内容是否相等,使用原始的equals()方法 明显是行不通的,所以我们根据比较的内容需要重写equals()方法。
例如:我们在domain中的实体类(Account为例)中一般要生成这样的equals()方法
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Account account = (Account) o;
return Objects.equals(id, account.id) &&
Objects.equals(name, account.name) &&
Objects.equals(money, account.money);
}
注意
object 中的equal()方法 不允许比较的对象为空,否则会报空指针异常,为了避免安全问题,一般使用Objects中的equals()方法 。
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
对源码分析我们也能知道,Objects中封装的equals()方法对对象是否为null做了处理