基本数据类型和 class 数据类型的 equals() 方法和“==”运算符
equals() method and '==' operator for primitive data types and class data types
我已经知道 equals()
方法(或任何其他类似的方法)比较对象之间给定类型的值,而 ==
运算符比较表达式中声明的两个引用是否是相同,但是我在比较来自相同 class 的两个对象的每个字段时遇到一个问题,代码如下:
//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();
考虑到这个实现,声明必须使用方法来比较 class 数据类型(如字符串)并且可以使用 ==
运算符是否正确?在处理原始数据类型时,即使完成对象比较而不是像 getAge() == 2
?
这样的简单比较
完全正确,处理基本类型如int双字节char等,你必须使用==比较它们,MUST因为它们不是对象所以它们没有实现equals()。说清楚了,剩下的就ok了
is it correct to state that is mandatory to use the methods to compare class data types (like String)
是的。
and that is possible to use the == operator when dealing with primitive data types
是的。
even though an object comparison is done instead of a simple comparison like getAge() == 2?
没有。这样说是不对的。原始类型不是对象,因此没有 equals()
方法可调用,因此您唯一的选择是通过 ==
比较值,并且对于始终产生所需结果的原始类型。
我已经知道 equals()
方法(或任何其他类似的方法)比较对象之间给定类型的值,而 ==
运算符比较表达式中声明的两个引用是否是相同,但是我在比较来自相同 class 的两个对象的每个字段时遇到一个问题,代码如下:
//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();
考虑到这个实现,声明必须使用方法来比较 class 数据类型(如字符串)并且可以使用 ==
运算符是否正确?在处理原始数据类型时,即使完成对象比较而不是像 getAge() == 2
?
完全正确,处理基本类型如int双字节char等,你必须使用==比较它们,MUST因为它们不是对象所以它们没有实现equals()。说清楚了,剩下的就ok了
is it correct to state that is mandatory to use the methods to compare class data types (like String)
是的。
and that is possible to use the == operator when dealing with primitive data types
是的。
even though an object comparison is done instead of a simple comparison like getAge() == 2?
没有。这样说是不对的。原始类型不是对象,因此没有 equals()
方法可调用,因此您唯一的选择是通过 ==
比较值,并且对于始终产生所需结果的原始类型。