Java中引用类型比较:'==' vs 'equals()'

在Java中,比较两个引用类型对象可以使用'=='运算符或'equals()'方法,它们的作用有所区别:

1. '=='运算符:比较内存地址

使用'=='运算符比较引用类型时,实际上比较的是两个引用是否指向同一个对象,即比较它们的内存地址是否相同。

  • 如果两个引用指向同一个对象,则返回'true'。* 如果两个引用指向不同的对象,即使对象内容相同,也会返回'false'。

2. 'equals()'方法:比较对象内容

'equals()'方法是Object类中定义的方法,所有引用类型都继承了该方法。默认情况下,'equals()'方法的行为与'=='运算符相同,也是比较内存地址。

然而,我们可以通过重写'equals()'方法来自定义对象相等的条件,从而实现根据对象内容进行比较。

**示例:**javaclass Person { private String name; private int age;

// 构造方法和其他代码省略

@Override    public boolean equals(Object obj) {        if (this == obj) {            return true;        }        if (obj == null || getClass() != obj.getClass()) {            return false;        }        Person person = (Person) obj;        return age == person.age && Objects.equals(name, person.name);    }}

Person p1 = new Person('Alice', 20);Person p2 = new Person('Alice', 20);System.out.println(p1.equals(p2)); // 输出true

在这个例子中,我们重写了'Person'类的'equals()'方法,使其根据'name'和'age'字段的值来判断两个'Person'对象是否相等。

总结:

  • 使用'=='比较引用类型时,比较的是内存地址。* 使用'equals()'方法比较引用类型时,默认比较内存地址,但可以通过重写该方法来自定义比较逻辑,实现根据对象内容进行比较。
Java中引用类型比较:== vs equals()

原文地址: https://www.cveoy.top/t/topic/cqH0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录