Java 对象比较


Java中对象比较,实际是对象的属性进行比较

以车为例子,创建一个 Che类,定义名字和价格两个属性,实例对象进行比较,比较的是name和price

name是String类型,用equals方法。price是double类型,可以直接==

如果两个都相等说明,两个对象相等

class Che{
    private String name;
    private double price;
    public Che() {    }
    
    public Che(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;
    }
    public String getInfo() {
        
        return "车名"+name+",价格"+price;
        
    }
} 
public class Compare {

    public static void main(String[] args) {
        Che c1=new Che("奥拓",20000.0);
        Che c2=new Che("奥拓",20000.0);
        Che c3=new Che("奥迪",20000.0);
        
        if(c1.getName().equals(c2.getName()) && c1.getPrice()==c2.getPrice()) {
            System.out.println("两个对象相等");
        }else {
            System.out.println("不相等");
        }
    }

}

运行结果


把比较的过程,封装到类中。优化比较过程,加入null和与自己比较的场景

class Che{
    private String name;
    private double price;
    public Che() {    }
    
    public Che(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;
    }
    //比较方法,返回值boolean
    public boolean method(Che che) {
        if(che==null) {
            return false; //如果传入null===》返false
        }
        if(this==che) {
            return true; //如果是自己===》返true
        }
        if(this.getName().equals(che)&&this.getPrice()==che.getPrice()) {
            return true; //当两个对象名字和价格都相等===》返true
        }
        return false; //其他情况 即连个对象不相等===》返false
    }
    public String getInfo() {
        
        return "车名"+name+",价格"+price;
        
    }
} 

测试

public class Compare {

    public static void main(String[] args) {
        Che c1=new Che("奥拓",20000.0);
        Che c2=new Che("奥拓",20000.0);
        Che c3=new Che("奥迪",20000.0);
        
        System.out.println(c1.method(null)?"相等":"不相等");
        System.out.println(c1.method(c1)?"相等":"不相等");
        System.out.println(c1.method(c2)?"相等":"不相等");
        System.out.println(c1.method(c3)?"相等":"不相等");
    }

}

运行结果

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM