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

标签 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?

这样的简单比较

最佳答案

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() 方法可以调用,所以你唯一的选择是通过 == 比较值,并且在原始类型的情况下总能产生所需的结果。

关于java - 原始数据类型和类数据类型的 equals() 方法和 '==' 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46800753/

相关文章:

c++ - 是否可以返回指向类中声明的结构的指针?

javascript - any[ ] 和 any[ ] = [ ] 之间的区别

javascript - 'clearing' 对象是避免使用 hasOwnProperty 的可行方法吗?

java - 使用 Hibernate 生成服务层

java - 如何保持 "Hello World"类型服务器运行

java - spring boot CommandLineRunner调用所有带run方法的类

python - 通过子类化 `type` 类来实现类描述符

javascript - 更好的嵌套对象引用语法?

javascript - 如何过滤对象并更新过滤后的内容? JavaScript

java - 散列字符串在散列号java