/*
Object类中成员方法:
public boolean equals(Object obj)
protected void finalize() 是做垃圾回收的,不是立刻就做回收
面试题:final finally finalize 区别?
protected Object clone()
知识点:
1、==比较,如果比较的基本数据类型,直接比较具体的数值是否相等,若比较的是引用数据类型,比较的是地址值是否一样
2、Object类中的equals方法默认直接使用==比较两个对象,若地址值不一样,就是false
*/
class Demo2 extends Object {
int a;
@Override
public String toString() {
return "Demo2{" +
"a=" + a +
'}';
}
@Override
public boolean equals(Object o) { // d1.equals(d2)
/*
o -- d2
this -- d1
*/
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Demo2 demo2 = (Demo2) o;
return this.a == demo2.a;
}
}
public class ObjectDemo2 {
public static void main(String[] args) {
//创建第一个Demo2对象
Demo2 d1 = new Demo2();
d1.a = 100;
System.out.println(d1);
//创建第二个Demo2对象
Demo2 d2 = new Demo2();
d2.a = 100;
System.out.println(d2);
// Object中的equals方法默认比较的是地址值
System.out.println(d1.equals(d2)); // false ; 类重写equals方法后,比较的就是成员变量值:true
String s1 = new String("hello"); // 堆内存中
String s2 = "hello"; // 方法区中的常量池中
System.out.println(s1 == s2); // false
System.out.println(s1.equals(s2)); // true 说明String类中重写equals方法,比较的是内容
System.out.println(s1); // hello 说明String类中重写toString方法,获取对象中的内容
}
}
标签:String,d2,Object,System,equals,Demo2,方法
From: https://www.cnblogs.com/qiwei-bigdata/p/18347985