Object_equals 方法


一 Object 中equals:

  格式: public boolean equals(Object obj)

  equals 是比較兩個對象是否相等,實際是比較兩個對象的內存地址值是否相等,如果相等方法true,否則false

二 String 中equals:

  重寫了Object中equals 是用來比較兩個字符串是否相等

  目的是給對象成員比較

三 ==

  基本數據類型比較:

    基本數據類型比較只能用==

  引用數據類型比較:

    用於比較兩個對象是否相等,實際上是比較兩個對象內存地址是否相等

  

  

/* 
String equals 重寫Object 中的方法;
 */

package cn.itcast_03;

public class Student3 {
    private String name;
    private int age;

    public Student3() {
        super();
    }

    public Student3(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    
    // @Override
    /* public boolean equals(Object obj){
        //為了提高代碼效率
        if(this == obj){
            return true;
        }
        if(obj == null){
            return false;
        }
        
        if(getClass() != obj.getClass()){
            return false;
        }
        
        if(
        )
    } */
    
    @Override
    /* 
    String 類型比較, 得用String 類中而equals();比較的是字符串值是否相等
    比較成員變量
    String equals 是重寫Object 中方法
    */
    /* 
    public boolean equals(Objcet obj){
        Student3 s = (Student3)obj;//使用學生類特有的成員變量, 因此需要向下轉型
        if(this.name.equals(s.name)  && (this.age == s.age)){
            return true;
        }else{
            return false;
        }
        
        //上面可以寫成這樣
        // return this.name.equals(s.name) && this.age == s.age;
    }
     */
    //優化本
    public boolean equals(Objcet obj){
        //提高效率,同一個對象就不用比較
        if(obj == this){
            return true;
        }
        //判斷是否是obj 是否是學生類,用 instanceof 判斷
        if(!(obj instanceof Student3)){
            return false;
        }
     //強制類型轉化
     Student3 s = (Student3) object;
return this.name.equals(s.name) && this.age == s.age; } }



/* 

equals:
    Object 中 equals();
        public boolean equals(Object obj){
            return obj == this;
        }
    Object 中 equals 比較兩個對象的地址值
    
    重寫: equals 重寫一般比較是成員變量, 而且可以自動生成.
    
== hao:
    基本數據類型的比較
    引用數據類型的同一個類中對象的比較,對象的地址值
    不同類對象比較會報錯

 */
package cn.itcast_03;
public class StudentDemo1
{
    public static void main(String[] argws){
        Student3 s1 = new Student3("林青霞", 30);
        Student3 s2 = new Student3("林青霞", 30);
        System.out.println(s2 == s1);//false
        Student3 s3 = s1;
        System.out.println(s3 == s1);//true
        
        System.out.println("---------------------");
        System.out.println(s1.equals(s2));//false
        System.out.println(s1.equals(s3));//true
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM