【发布时间】:2018-03-29 18:30:48
【问题描述】:
我已经知道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这样的简单比较?
【问题讨论】:
-
person.getAge()不是一个对象——它的类型是int,这使它成为一个原始类型。运算符应用于表达式的类型,而不是基于构成表达式的任何组件。
标签: java class object methods operators