Object类
java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。
如果一个类没有特别指定父类, 那么默认则继承自Object类。例如:
public class MyClass /*extends Object*/ {
// ...
}
一、toString 方法
String toString();返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。对于特殊的类,为了更加清楚的通过toString 方法查看其属性,我们需要重写toString方法。
public class Demo{
public static void main(String [] args){
Person person = new Person();
person.toString();
}
}
二、equals方法
boolean equal();指示某个对象和此对象是否相同。
- 默认地址相同 :如果没有覆盖重写equals方法,那么Object类中默认进行
==运算符的对象地址比较,只要不是同一个对象,结果必然为false。 - 对象内容比较:如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法。
public boolean equals(Object obj){
return (this== obj);//引用类型比较地址值,基本类型比较值。
}
public class Demo1{
public static void main(String [] args){
Person person1 = new Person();
Person person2 = new Person();
person1.equals(person2);//-->false
}
}
三、Objects工具类
在刚才IDEA自动重写equals代码中,使用到了java.util.Objects类,那么这个类是什么呢?
在JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。
在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题。方法如下:
public static boolean equals(Object a, Object b):判断两个对象是否相等。
我们可以查看一下源码,学习一下:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
1278

被折叠的 条评论
为什么被折叠?



