equals()方法和' =='原始数据类型和类数据类型的运算符

时间:2017-10-17 23:41:07

标签: java class object methods operators

我已经知道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();

考虑到这个实现,是否正确使用方法来比较类数据类型(如String)以及在处理原始数据类型时可以使用==运算符是正确的即使进行了对象比较而不是像getAge() == 2这样的简单比较?

2 个答案:

答案 0 :(得分:2)

  

说明使用方法比较类数据类型(如String)

是必须的

  

可以在处理原始数据类型时使用==运算符

  

即使进行了对象比较而不是像getAge()== 2?

这样的简单比较

没有。说这个是不正确的。原始类型不是对象,因此没有equals()方法可以调用,因此您唯一的选择是通过==比较值,并且在原始类型的情况下总是产生所需的结果。

答案 1 :(得分:1)

这是绝对正确的,处理原始类型如int双字节char等等,你必须使用==来比较它们,因为它们不是对象所以它们不实现equals()。所以澄清一下,其余的都没问题