1. 程式人生 > >object以及提供的方法

object以及提供的方法

==簡單資料型別,比較的是值的大小;

引用資料型別,是比較的是是否為同一物件,比較的是記憶體地址;

object中equals就是用==進行兩個物件之間的對比,所以object提供給我們的equals方法和==沒區別;

當有特殊需求,如認為屬性相同即為同一物件時我們就需要重寫equals方法;

我們呼叫equals對比兩個字串所用的equals是經過string重寫了的,對比的是字串內容,

object提供給我們的tostring方法是返回當前物件的有關資訊,按字串物件返回;

而我們呼叫輸入字元方法syso的時候tostring也被string重寫了,輸出的是字串內容!

Object類

Object是所有類的祖宗,是最開始的父類;
例如我們寫一個pet類,並沒有繼承任何類,但java預設它繼承了Object類:

public class Pet extends Object{
   .......
}

有一句話:Class Object is the root of the class hierarchy.

Object類被繼承時裡面的方法都被下面的類所繼承:

方法                        說明
toString()                  返回當前物件本身有關資訊,按字串物件返回
equals()                    比較兩個物件是否是同一物件(包括記憶體地址),是則返回true
hashCode()                  返回該物件的雜湊程式碼值
getClass()                  獲取當前物件所屬的類資訊,返回class物件  

我們可以根據需求重寫object提供給我們的初始方法

注:我們前面string字串對比時使用過equals方法,不過對比的是字串的內容並不比較記憶體地址,還使用過字串輸出語句,將字串內容輸出到顯示裝置中,相當於System.out.println(s1.toString());但我們輸出的是字串內容,並不是物件有關資訊。
原因:使用String的時候它已將將這兩個方法重寫了,不再是Object給我們的初始方法!

補充:instanceof(特殊字元)用於判斷一個引用型別所引用的物件是否是一個類的例項;
(也就是比較關鍵字前後的物件是夠有上下級關係)

綜合練習
需求說明:
重寫比較規則,判斷兩名學員(Student)是否為同一物件
Student相關屬性:
id(學號)、那麼(名字)、age(年齡)

如果兩名學員學號以及姓名相同,則為同一物件