java中==和equals
时间: 2023-05-24 22:04:34 浏览: 56
Java中,==是一个运算符,用于比较两个对象或基本类型之间的值是否相同。对于基本类型,比较的是值,对于对象类型,则是比较对象的引用地址是否相同。
而equals()是一个方法,用于比较两个对象是否相等。默认情况下,equals()方法比较的是对象的引用地址,即比较两个对象是否是同一个对象。但可以通过重写equals()方法实现自定义的对象相等比较。
示例代码:
```java
String a = "hello";
String b = "hello";
if (a == b) {
System.out.println("a 和 b 的引用地址相同");
} else {
System.out.println("a 和 b 的引用地址不同");
}
if (a.equals(b)) {
System.out.println("a 和 b 的值相同");
} else {
System.out.println("a 和 b 的值不同");
}
```
输出结果为:
a 和 b 的引用地址相同
a 和 b 的值相同
因为字符串常量池中的字符串对象被缓存并重复使用,所以a和b的引用地址相同,而他们的值也相同。使用equals()方法比较值时,结果也是相同的。
相关问题
java 中==和equals区别
== 是比较运算符,用于比较两个变量或值是否相等,比较的是地址。
equals 方法是由类 Object 定义的,用于比较两个对象是否相等,需要重写该方法来实现自定义的比较方式。
对于基本类型,==和equals 方法的比较结果相同。对于引用类型,==比较的是地址,equals 比较的是内容。
java中==和equals方法的区别
在Java中,==和equals方法都可以用来比较对象,但它们的作用不同。
==比较的是对象的引用,也就是比较两个对象是否是同一个对象,即它们在内存中的地址是否相同。如果两个对象的地址相同,则==返回true,否则返回false。
equals方法比较的是对象的内容,也就是比较两个对象是否具有相同的属性值。默认情况下,equals方法和==作用相同,比较的是对象的引用,但是我们可以在自定义类中重写equals方法来改变比较的方式。重写equals方法时需要满足以下条件:
1.自反性:对于任何非空引用x,x.equals(x)应该返回true。
2.对称性:对于任何非空引用x和y,如果x.equals(y)返回true,那么y.equals(x)也应该返回true。
3.传递性:对于任何非空引用x、y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也应该返回true。
4.一致性:对于任何非空引用x和y,如果用于比较的属性值没有发生改变,那么多次调用x.equals(y)应该返回相同的结果。
5.非空性:对于任何非空引用x,x.equals(null)应该返回false。