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