java中的“=”與“equals”的區別
阿新 • • 發佈:2018-12-17
生命之燈因熱情而點燃,生命之舟因拼搏而前行。
java中的資料型別
兩大資料型別
首先要對java的資料型別有了解。
基本資料型別
整型 int |short | long | byte 浮點型 |float |double 字元型|char 布林型|boolean
引用型別
陣列 類 介面
“=”與equals的區別
平時我們在學習java語言時,經常遇到“=”與equals ,今天就把這個徹底弄清楚。
- 基本資料型別在進行比較時用(=)時,比的是他們的值
- 引用型別在進行比較時用(=)時,比較的是他們在記憶體中的地址值(除非是同一個new出來的物件,他們的比較的結果為true,否則比較結果為false。因為每new一次,都會重新開闢堆記憶體空間) equals java中的equals是這樣寫的:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
這個方法預設的比較也是地址值,但是這樣比就意義不大。所以,在其他的庫中equals方法都被重寫了,一般都是比較的是具體的值是否相等,而不是地址值。 具體的看一個例子: String中的equals方法
public static void main(String[] args) { String s1="hello"; String s3 = new String("hello"); String s2=s3; System.out.println(s1==s2);//false System.out.println(s1==s3);//false System.out.println(s3==s2);//true System.out.println(s1.equals(s2));//true System.out.println(s1.equals(s3));//true System.out.println(s3.equals(s2));//ture
通過程式碼例項應該清楚的看出“=”與equals的區別了。