我是機動車!car1和car2的引用比較:true===============================張小泉出租車是屬于長生公司的出租車是提高市民生活質量的重要條件之一taxi的信息是張小泉擁有一輛藍色出租車===============================孫二娘擁有的紫色顏色的私家車,有7座位家用汽車大多擁有5個座位public class Car { ?private String color;private String userName;public Car() {}public Car(String color, String userName) { this.color=color; this.userName=userName;}public String getColor() { return color;}public void setColor(String color) { this.color = color;}public String getUserName() { return userName;}public void setUserName(String userName) { this.userName = userName;}public void use() { System.out.println("我是機動車!");}public boolean equals(Object obj){if(obj==null) return false;Car temp = (Car)obj;if(this.getColor().equals(temp.getColor())&&this.getUserName().equals(temp.getUserName())) return true;else return false;}public boolean equals(Car obj) { if(obj==null) return false; Car temp = obj; if(this.getColor().equals(temp.getColor())&&this.getUserName().equals(temp.getUserName())) return true; else return false; }}public class Test {? ? public static void main(String[] args){? Car car1 = new Car("紅","小汽車"); Car car2 = new Car("紅","小汽車");? ? ? ?car1.use();? ? ? ?boolean flag = car1.equals(car2);? ? ? ?System.out.println("car1和car2的引用比較:"+flag);? ? ? ?System.out.println("===============================");? ? ? ?Taxi taxi1=new Taxi("藍色","張小泉","長生");? ? ? ?taxi1.ride();? ? ? ?taxi1.use();? ? ? ?System.out.println(taxi1.toString());? ? ? ?System.out.println("===============================");? ? ? ?HomeCar homecar1=new HomeCar("紫色","孫二娘",7);? ? ? ?homecar1.display();? ? ? ?homecar1.display(5); }}我只貼出了與equal有關的類。以上程序運行是成功的不是很懂為什么要用equals判斷?要判斷是否都是代碼這么寫的,但這么寫的意義是什么?
1 回答

慕慕1581088
TA貢獻8條經驗 獲得超9個贊
(沒錯,又是我?。?/p>
基本數據類型通常用==判斷是否相等
引用數據類型用==比較的是兩個對象的地址是否相同
equals是Object 類的方法,內部實現為:
public boolean equals(Object obj){
return (this == obj);
}
用的也是==,因為Object是所有類的父類,所以每個類即使沒定義
也都能用equals方法不過和用==沒有區別,要想實現特定的比較方法,
需要在本類中重寫equals,如你所做的:
public boolean equals(Object obj){
if(obj==null)
return false;
Car temp = (Car)obj;
if(this.getColor().equals(temp.getColor())&&this.getUserName().equals(temp.getUserName()))
return true;
else
return false;
}
因為有起好的名字,所以我們就用equals了(我們取名字的水平就是這么匱乏),
你取其他的名字也是可以的。
要注意一點,昨天說過,
強轉前應該判斷一下obj對象是不是Car的類型的
要不可能拋ClassCastException 類型轉換異常
if(obj instanceof Car)
????Car temp = (Car)obj;
添加回答
舉報
0/150
提交
取消