1. 程式人生 > 其它 >【答疑解惑】Java中的預設構造器和equals方法

【答疑解惑】Java中的預設構造器和equals方法

有一些網友在學習Java基礎知識是遇到一些問題小編來解答一下。

1、Java中的預設構造器:

在Java中你要建立一個物件肯定會呼叫new語句來建立一個物件,在new的時候會呼叫物件的初始化函式,預設如果你沒有寫建構函式的話編譯器會自動給你建立一個無參的建構函式,如果你自己寫了建構函式則根據你new時候的語句呼叫不同的建構函式,舉個例子:

 class A {
        private int m;
        //預設構造方法
        A() {
        }
        //過載的構造方法
        A(int i) {
            m = i;
        }
    }

A a = new A()會呼叫預設建構函式,A a1 = new A(1)會呼叫第二個你過載的建構函式。這裡有個知識,如果你自己寫了一個帶有引數的構造器,系統不會再幫你建立無參構造器(預設構造器)。

2、Java中的equals:

equals操作的是物件objectA.equals(objectB),作用是比較兩個物件是否相同。Java中所有的類都是從基類Object繼承過來的,預設你在比較兩個物件的時候呼叫的是Object類的equals方法:

public boolean equals(Object o) {
    return this == o;
}

大家可以看到上面的方法比較的是兩個物件的引用是否是同一個,你建立的兩個物件肯定是不同的,下面的圖片也正是驗證了這個問題。

如果你想讓v1.equals(v2)返回為true則需要在Value類中重寫Object的equals方法:如下:

@Override
public boolean equals(Object obj) {
    Value a = (Value)obj;
    return i == a.i;
}

重寫equals方法,比較的是Value的i值。

總結:

如果你還覺得回答不夠徹底就直接加群問小編或者在公眾號直接留言。