Java中== 和 equals() 的区别?
时间: 2024-01-13 12:03:53 浏览: 40
在Java中,==和equals()都是用于比较两个对象的,但是它们比较的内容是不同的。==比较的是两个对象引用的地址是否相等,而equals()比较的是两个对象引用所指的内容是否相等。需要注意的是,equals()方法是String类中的方法,用于比较两个字符串对象的内容是否相等。在Object类中,equals()方法的底层还是使用的==进行判断,因此如果要比较两个引用数据类型的内容是否相等,需要在对应的类中重写equals()方法。如果没有重写equals()方法,则和直接使用==没有什么区别。另外,==用于比较两个基本数据类型的值是否相等,而equals()方法只能比较两个引用数据类型的值是否相等。
相关问题
在java中==和equals的区别
在 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 方法比较两个对象的内容。在实际开发中,我们要根据具体的需求来选择使用哪个方法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)