在线
客服

发布
需求

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

5-2编程练习,不太懂equals的意思。是否里面的equals都有必要

我是机动车!
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

(没错,又是我!)
基本数据类型通常用==判断是否相等
引用数据类型用==比较的是两个对象的地址是否相同
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;

使用道具 举报

发新帖
国内首家创新型IT技术需求众包服务平台,软件需求就上天盟网! 立即登录 立即注册