版权声明:Dirichlet_zju https://blog.csdn.net/Dirichlet_zju/article/details/85768044
一、概述
Object类是所有类的根类。
Object是不断抽取而来,具备着所有对象都具备的共性内容。
二、equals方法
class Person extends Object
{
private int age;
Person(int age)
{
this.age = age;
}
}
class ObjectDemo
{
public static void main(String[] args)
{
Person p1 = new Person(20);
Person p2 = new Person(20);
System.out.println(p1==p2);
System.out.println(p1.equals(p2));
}
}
均输出false,因为比较的是两个对象的地址值。
equals方法覆盖:
@Override
public boolean equals(Object obj) {
if(!(obj instanceof Person)){
throw new ClassCastException("类型错误");
}
else{
Person p = (Person)obj;
return this.age == p.age;
}
}
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
三、hashCode方法
public class ArrayDemo {
public void JavaDoc(){
}
public static void main(String args[]){
Person p1 = new Person(20);
Person p2 = new Person(20);
ArrayDemo p3 = new ArrayDemo();
System.out.println(p1==p2);
System.out.println(p1.equals(p2));
// System.out.println(p1.equals(p3));
System.out.println(Integer.toHexString(p1.hashCode()));
System.out.println(p1);
}
}
class Person extends Object
{
private int age;
Person(int age)
{
this.age = age;
}
@Override
public boolean equals(Object obj) {
if(!(obj instanceof Person)){
throw new ClassCastException("类型错误");
}
else{
Person p = (Person)obj;
return this.age == p.age;
}
}
@Override
public int hashCode() {
return this.age;
}
}
三、getClass方法
public class Test {
public static void main(String[] args) {
Person p = new Person(1,"老湿");
System.out.println(p.getClass());
System.out.println(p.getClass().getName());
}
}
class Person{
int id;
String name;
public Person(int id, String name) {
super();
this.id = id;
this.name = name;
}
}
四、toString方法
返回该对象的字符串表示。通常,
toString
方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
Object
类的toString
方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@
”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:getClass().getName() + '@' + Integer.toHexString(hashCode())
返回:
该对象的字符串表示形式。