一 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 } }