1. 程式人生 > >java中的“=”與“equals”的區別

java中的“=”與“equals”的區別

生命之燈因熱情而點燃,生命之舟因拼搏而前行。

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的區別了。