请解释字符串比较方法 equals()和对象的比较方法“==”的异同点。java编程举例说明。
时间: 2023-06-24 20:06:27 浏览: 106
在Java中,equals()方法是用来比较两个对象的内容是否相同,而“==”运算符则是用来比较两个对象是否是同一个对象的引用。
具体来说,equals()方法通常被重写以实现自定义的比较方法。在Java中,所有的类都继承了Object类,Object类中的equals()方法默认比较的是两个对象的引用地址是否相等。因此,如果想对自定义类进行内容比较,就需要重写equals()方法。
下面是一个示例:
```java
public class Student {
private String name;
private int age;
// 构造方法和其他方法省略
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Student)) return false;
Student student = (Student) o;
return age == student.age &&
Objects.equals(name, student.name);
}
}
```
上述代码中,我们重写了equals()方法,通过比较两个学生对象的姓名和年龄,来判断两个学生对象是否相等。
而在使用“==”运算符时,它会比较两个对象的引用地址是否相等。例如:
```java
String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");
System.out.println(s1 == s2); // true
System.out.println(s1 == s3); // false
```
在上述代码中,s1和s2都是字符串常量,它们的引用地址是相同的,因此使用“==”运算符比较会返回true。而s3是通过new关键字创建的新的字符串对象,它的引用地址与s1和s2不同,因此使用“==”运算符比较会返回false。
总之,equals()方法比较的是两个对象的内容是否相同,而“==”运算符比较的是两个对象的引用地址是否相同。在Java编程中,我们应该根据具体的需求选择合适的比较方法。
阅读全文