谈谈java中 equal 和 == 的具体区别
时间: 2023-09-03 09:16:30 浏览: 173
在Java中,`equals()`和`==`都是用来比较两个对象的方法,但是它们的作用不同。
`equals()`方法用于比较对象的内容是否相等,即比较对象的属性值是否相等。默认情况下,`equals()`方法比较的是两个对象的地址是否相等,如果想要比较对象的属性值是否相等,就需要在对应类中重写`equals()`方法。一般而言,如果一个类重写了`equals()`方法,通常也需要重写`hashCode()`方法。
`==`运算符用于比较两个对象的地址是否相等,即判断两个对象是否是同一个对象。如果两个对象的地址相等,则它们一定是同一个对象;如果两个对象的地址不相等,则它们不一定是不同的对象,可能是同一类的不同对象。
举个例子,假设有一个Person类,包含两个属性name和age。当我们使用`equals()`方法比较两个Person对象时,比较的是它们的name和age属性值是否相等;而当我们使用`==`运算符比较两个Person对象时,比较的是它们的地址是否相等。
```
Person p1 = new Person("张三", 20);
Person p2 = new Person("张三", 20);
Person p3 = p1;
System.out.println(p1.equals(p2)); // true
System.out.println(p1 == p2); // false
System.out.println(p1 == p3); // true
```
在上面的例子中,p1和p2虽然属性值相等,但是它们是两个不同的对象,因此使用`==`运算符比较结果为false;而p1和p3是同一个对象,因此使用`==`运算符比较结果为true。`equals()`方法比较的是p1和p2的属性值是否相等,因此结果为true。
阅读全文