equals()方法和'=='操作符用于原始数据类型和类数据类型
问题描述:
我已经知道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
这样的简单比较?
答
是它正确地指出,是强制使用的方法来比较类数据类型(如String)
是。
,这是可能的基本数据类型
是处理时使用==操作符。
即使完成对象比较而不是像getAge()== 2这样的简单比较吗?
不,这样说是不正确的。原始类型不是对象,因此没有equals()
方法可供调用,所以您唯一的选择是通过==
来比较值,并且在基本类型的情况下总是会产生所需的结果。
答
这是绝对正确的,处理原始类型如int double byte char等等,您必须使用==比较它们,因为它们不是对象,所以它们不实现equals()。所以澄清说,剩下的就是确定
'person.getAge()'不是一个对象 - 它的类型是'int',这使得它成为一个基元。运算符应用于表达式的类型,而不是基于组成表达式的任何组件。 – chrylis