Java之Object類中的equals方法
阿新 • • 發佈:2019-02-13
Object類中的equals方法比較的是記憶體地址,例:(Java中所有類預設繼承Object類)
package com.xiao.equals; /** * @author 笑笑 * @Date 2018年4月12日下午10:16:09 * */ public class Phone { private String name; private double price; //空參構造 public Phone(){ } //有參構造 public Phone(String name, double price) { this.name = name; this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } }
package com.xiao.equals; /** * @author 笑笑 * @Date 2018年4月12日下午10:18:34 * */ public class Test { public static void main(String[] args) { //Phone預設繼承Object類,equals方法屬於Object類 Phone p1 = new Phone("大哥大",999.0); Phone p2 = new Phone("大哥大",999.0); //使用Phone物件引用p1呼叫其父類的equals方法,來與p2比較; 返回的是布林值 //兩個物件的記憶體地址相等,返回true,不等,返回false boolean b = p1.equals(p2); //列印結果為fasle System.out.println(b); } }
從測試類中可以看出,p1與p2雖然都是Phone的物件引用,但他們的記憶體地址不同,比較的結果為fasle
結論:Object類中的equals方法比較的是兩個物件的記憶體地址,物件之間比較記憶體地址一般是沒有實際意義的,
所以我們一般都會重寫equals方法,我會在下一篇部落格中舉例.