Java中引用类型比较:== vs equals()
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()'方法比较引用类型时,默认比较内存地址,但可以通过重写该方法来自定义比较逻辑,实现根据对象内容进行比较。
原文地址: https://www.cveoy.top/t/topic/cqH0 著作权归作者所有。请勿转载和采集!