一,object
object类是所有java类的祖先,(根基类),是每个类的父类,所有对象都默认继承这个类。如果没有使用extends关键字,都是默认继承object类。
1,ToString类
tostring()当输出一个对象时,会默认调用类中toString()方法,把对象以字符串形式输出,
类中如果没有toString(),那么会调用父类(Object)中的toString();
当Object类中的默认输出类的名字和对象在内存中地址(10进制 转为16进行)。
es:public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
举例说明:
public static void main(String[] args) {
Person p1 = new Person("张三1",20);
Person p2 = new Person("张三2",20);
System.out.println(p1);
System.out.println(p2);
}
2,equals方法
1,
Object类中定义有:
● public boolean equals(Object obj)方法,判断对象是否相等的逻辑。
public boolean equals(Object obj) {
return (this == obj);
}
(要注意的是,object中equals方法默认的是==比较,比较的是对象的地址,只有在比较基本数据类型是才是比较的值
public boolean equals(Object obj) {
return (this == obj);
},底层代码就可以看出)
2,
所以,这时,比较引用对象是用到equals。
int a = 10;
int b = 10;
System.out.println(a==b);
Person p1 = new Person("张三1",20);//凡是new出来的,内存地址肯定不同
Person p2 = new Person("张三1",20);
Person p3 = p2;
System.out.println(p1.equals(p2));
//以后如果比较两个对象的地址是否相等时,直接使用==比较即可
System.out.println(p1==p2);
System.out.println(p3==p2);
//所以其他的类为了比较两个对象中包含的内容是否相等,都对Object中的equals(),进行了重写,改为判断内容是否相等
System.out.println(p1.equals(p2));
//equals()用来比较对象中的内容是否相等
String s = new String("abc");
String s1 = new String("abc");
System.out.println(s==s1);//false
System.out.println(s1.equals(s));//true
}
}(注意,这里的person是自己在同一个包里创建的类,具体的代码不做展示,person对equals方法,进行了重写)