第一章 Object类
概述
java.lang.Object类是Java语言的根类,它其中描述的所有方法子类都可以使用。如果一个类没有特别指定的父类,那么它的父类就是Object类。
Object类中的方法
主要学习两个方法 toString()和equals(Object object)
toString方法
public String toString():返回该对象的字符串表示
返回的字符串内容就是对象的类型+@+内存地址值。
源码:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
例如:
package com.review;
public class Demo {
public static void main(String[] args) {
Demo demo=new Demo();
System.out.println(demo.toString());
}
}
//返回的值是:com.review.Demo@1540e19d
另外,我们可以自己重写toString方法。
equals方法
public boolean equals(Object object): 指示其他某个对象是否与此对象相等。
默认地址比较:如果没有覆盖重写equals方法,那么Object类中默认进行==运算符的对象地址比较,只要不是同一个对象,结果必然为false。
源码:
public boolean equals(Object obj) {
return (this == obj);
}
如果希望进行比较对象的内容,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法。
java.util.Objects中的equals方法比较也是地址值:优化了Object类中equals方法容易抛出空指针异常的问题。
源码:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
例如:
import java.util.Objects;
public class Student {
public static void main(String[] args) {
String s1="aa";
String s2="aa";
System.out.println(Objects.equals(s1,s2));//true
String s3=new String("aa");
String s4=new String("aa");
System.out.println(Objects.equals(s3,s4));//true
//由于String类重写了equals方法比较的内容是否相等
}
}