在java中==和equals的区别
时间: 2023-08-30 21:07:22 浏览: 101
在 Java 中,“==”、equals 和 hashCode 都有不同的作用。
“==”用于判断两个对象是否在内存中存储的是同一个对象实例。
equals() 方法用于判断两个对象内容是否相等。比较的是对象的属性值,通常需要重写该方法来实现自定义的对象比较规则。
hashCode() 方法用于获取对象的哈希码值,也可以作为 HashMap 中对象的键值。重写该方法时需要保证如果两个对象通过 equals() 方法比较是相等的,它们的 hashCode() 值也相等。
相关问题
在Java中 == 和 equals 的区别
在Java中,== 和 equals 都用于比较两个对象的值,但它们的实现方式有所不同。
== 操作符用于比较两个对象的引用是否相同,即比较两个对象是否指向同一个内存地址。如果两个引用指向同一个对象,则它们是相等的;否则,它们是不相等的。例如:
```
String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false
```
在上面的代码中,str1 和 str2 指向同一个字符串对象,因此 str1 == str2 的结果为 true。而 str3 是通过 new 关键字创建的一个新的字符串对象,它与 str1 和 str2 的引用不同,因此 str1 == str3 的结果为 false。
equals 方法用于比较两个对象的内容是否相等,即比较两个对象的值是否相等。通常情况下,我们需要自己重写 equals 方法来定义相等的规则。例如:
```
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof Person)) {
return false;
}
Person other = (Person) obj;
return this.name.equals(other.name) && this.age == other.age;
}
}
Person p1 = new Person("Tom", 20);
Person p2 = new Person("Tom", 20);
System.out.println(p1.equals(p2)); // true
```
在上面的代码中,我们重写了 Person 类的 equals 方法,定义了当两个 Person 对象的 name 和 age 属性都相等时,它们是相等的。因此,p1 和 p2 的 equals 方法返回 true。
总之,== 操作符比较两个对象的引用,equals 方法比较两个对象的内容。在实际开发中,我们要根据具体的需求来选择使用哪个方法。
java 中==和equals区别
== 是比较运算符,用于比较两个变量或值是否相等,比较的是地址。
equals 方法是由类 Object 定义的,用于比较两个对象是否相等,需要重写该方法来实现自定义的比较方式。
对于基本类型,==和equals 方法的比较结果相同。对于引用类型,==比较的是地址,equals 比较的是内容。
阅读全文