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)?"相等":"不相等"); } }
运行结果