1. 程式人生 > >== 與 equals()方法的區別

== 與 equals()方法的區別

return 使用 自定義類 [] true 適用於 內容 lean 編譯

* equals()方法的使用
*
* 1.java.lang.Object類中的equals()方法的定義:
*
* public boolean equals(Object obj) {
return (this == obj);
}
*
* 說明:Object類中equals()比較兩個對象的引用地址是否相同。(或:比較兩個引用是否指向同一個對象實體)
*
* 2. 像String、Date、File、包裝類等重寫了Object類中的equals()方法,比較兩個對象中的實體內容是否相等。
*
* 3. 對於自定義類來講,如果沒重寫Object類中的equals()方法,調用equals()方法時,仍然比較兩個對象的引用地址
* 是否相同。
*
* 4. 一般情況下,在開發中一旦調用了自定義類的equals(),通常都是重寫以後的equals()方法。
*
* 5.重寫equals()的規則:比較兩個對象的屬性是否都相等。
*
*
* 面試題:== 和 equals() 區別?
*
* ==:使用範圍:可以操作基本數據類型 和 引用數據類型
* 如果操作的是基本數據類型:比較兩個基本數據類型的變量對應的值是否相等。
* 如果操作的是引用數據類型:比較兩個引用的地址是否相同。
*
*
* equals():使用範圍:只適用於引用數據類型
* 具體的使用:見上面的1-5
*
*
*
* @author shkstart 郵箱:[email protected]

/* */
* @version 創建時間:2017年7月26日 下午2:18:41
*
*/
public class EqualsTest {
public static void main(String[] args) {
String str1 = new String("atguigu");
String str2 = new String("atguigu");

System.out.println(str1 == str2);//false

System.out.println(str1.equals(str2));//true

Date date1 = new Date(12141412L);
Date date2 = new Date(12141412L);

System.out.println(date1.equals(date2));//true


Customer c1 = new Customer("Tom", 12);
Customer c2 = new Customer("Tom", 12);

System.out.println(c1.equals(c2));//false--->true

System.out.println(c1 == c2);//false

int[] arr1 = new int[]{1,2,3};
int[] arr2 = new int[]{1,2,3};
System.out.println(arr1.equals(arr2));
System.out.println(arr1.equals(arr1));

System.out.println("*************************");

// ==
int num1 = 10;
int num2 = 10;
System.out.println(num1 == num2);//true
double d1 = 10.0;
System.out.println(num1 == d1);//true

char c = 10;
System.out.println(num1 == c);//true

char cc = ‘A‘;
int num = 65;
System.out.println(cc == num);//true

// System.out.println(true == num);//編譯不通過

// System.out.println("hello" == new java.util.Date()); //編譯不通過


}
}

== 與 equals()方法的區別