2017-10-17 114 views
2

我已經知道equals()方法(或與此類似的任何其他類型)比較給定類型的值與==運算符比較if在表達式中聲明兩個引用是一樣的,但是兩個對象的每場同一類比較時,我有一個問題,代碼如下:equals()方法和'=='操作符用於原始數據類型和類數據類型

//fields are String name, String surname, int age and boolean gender belonging to the Person class. 
public boolean isYou(Person person) 
{ 
    return 
    getName().compareToIgnoreCase(person.getName()) == 0 && 
    getSurname().compareToIgnoreCase(person.getSurname()) == 0 && 
    getAge() == person.getAge() && 
    getGender() == person.getGender(); 

在考慮到這種實現,是正確的狀態,這是必須使用方法來比較類數據類型(如字符串),並可能在處理原始數據類型時使用==運算符,即使對象比較完成而不是像getAge() == 2這樣的簡單比較?

+2

'person.getAge()'不是一個對象 - 它的類型是'int',這使得它成爲一個基元。運算符應用於表達式的類型,而不是基於組成表達式的任何組件。 – chrylis

回答

1

是它正確地指出,是強制使用的方法來比較類數據類型(如String)

是。

,這是可能的基本數據類型

是處理時使用==操作符。

即使完成對象比較而不是像getAge()== 2這樣的簡單比較嗎?

不,這樣說是不正確的。原始類型不是對象,因此沒有equals()方法可供調用,所以您唯一的選擇是通過==來比較值,並且在基本類型的情況下總是會產生所需的結果。

0

這是絕對正確的,處理原始類型如int double byte char等等,您必須使用==比較它們,因爲它們不是對象,所以它們不實現equals()。所以澄清說,剩下的就是確定