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