18.==和equals的区别?
时间: 2024-08-16 16:08:45 浏览: 49
Java 60道面试题和答案.docx
18. `==` 和 `equals()` 是 Java 中用于比较两个对象的重要运算符和方法,它们在用途上有所区别:
- **`==`** 运算符通常用于比较基本数据类型的值,如 int、boolean 等,以及对象引用是否指向同一个内存地址。当用于比较对象时,它检查的是两个引用是否指向同一个对象实例。
例如:
```java
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2); // 输出 false,因为它们虽然内容相同,但不是同一个对象实例
```
- **`equals()`** 方法则是针对对象的,对于字符串、数组等类已经覆盖了这个方法,用于比较对象的内容是否相等。如果一个类没有重写 equals(),那么默认的行为就是比较引用,跟 `==` 效果一样。但是大部分情况下,我们会重写 equals() 以提供更准确的比较,比如忽略大小写或空格等。
例如,在自定义的类中,我们可能会这样做:
```java
public class CustomClass {
private String value;
@Override
public boolean equals(Object obj) {
if (obj instanceof CustomClass) {
CustomClass other = (CustomClass) obj;
return this.value.equals(other.value);
}
return false;
}
}
```
在这里,`equals()` 比较的是两个 CustomClass 对象的 value 属性内容是否相等。
阅读全文