特别提示:不可发布违法信息/重复内容/垃圾内容/拼接内容/软件自动发布,一旦发现永久封号,欢迎向我们举报!
免费发布信息

equa(equals和==的区别)

发布时间:2023-11-01 10:46:55  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【

在Java中,equals和==是两个常用的比较运算符,但是它们之间有一些重要的区别。本文将详细介绍equals和==的区别。

1. 概述

equals和==都是用于比较两个对象是否相等的运算符。它们比较的内容不同。equals比较的是两个对象的内容是否相等,而==比较的是两个对象的引用是否相等。

2. equals的使用

equals是Object类的一个方法,所有的Java对象都继承了这个方法。在使用equals时,通常需要重写equals方法,以便比较两个对象的内容是否相等。在重写equals方法时,需要注意以下几点:

2.1. 实现equals方法时需要遵循的约定




  • 自反性:对于任何非空引用x,x.equals(x)应该返回true。


  • 对称性:对于任何非空引用x和y,如果x.equals(y)返回true,则y.equals(x)也应该返回true。


  • 传递性:对于任何非空引用x、y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,则x.equals(z)也应该返回true。


  • 一致性:对于任何非空引用x和y,如果用于equals比较的对象没有被修改,则多次调用x.equals(y)应该返回相同的结果。


  • 非空性:对于任何非空引用x,x.equals(null)应该返回false。



2.2. 重写equals方法的例子

下面是一个重写equals方法的例子:

```

public 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 == this) {

return true;

}


if (!(obj instanceof Person)) {

return false;

}


Person other = (Person) obj;


return this.name.equals(other.name) && this.age == other.age;

}

```

3. ==的使用

==比较的是两个对象的引用是否相等。如果两个对象的引用相等,则它们指向的是同一个对象。如果两个对象的引用不相等,则它们指向的是不同的对象。

4. ==和equals的区别

4.1. 基本类型的比较

对于基本类型,比较时应该使用==。因为基本类型的值是存储在栈中的,比较时比较的是它们的值是否相等。

4.2. 引用类型的比较

对于引用类型,比较时应该使用equals。因为引用类型的值是存储在堆中的,比较时比较的是它们的内容是否相等。

4.3. equals和==的区别总结




  • ==比较的是两个对象的引用是否相等,而equals比较的是两个对象的内容是否相等。


  • 对于基本类型,应该使用==进行比较;对于引用类型,应该使用equals进行比较。


  • 在重写equals方法时,需要遵循一定的约定。



5. 示例代码

下面是一个示例代码,用于演示equals和==的区别:

```

public class Main {

public static void main(String[] args) {

String s1 = new String("abc");

String s2 = new String("abc");


System.out.println(s1 == s2); // false

System.out.println(s1.equals(s2)); // true


Integer i1 = new Integer(1);

Integer i2 = new Integer(1);


System.out.println(i1 == i2); // false

System.out.println(i1.equals(i2)); // true


Person p1 = new Person("张三", 20);

Person p2 = new Person("张三", 20);


System.out.println(p1 == p2); // false

System.out.println(p1.equals(p2)); // true

}

```

6. 总结

equals和==是两个常用的比较运算符,但是它们之间有一些重要的区别。在比较基本类型时,应该使用==;在比较引用类型时,应该使用equals。在重写equals方法时,需要遵循一定的约定,以确保比较的正确性。

责任编辑:
相关评论我来说两句

机构最新动态

实力商家展示

  • 云霄一手货源
  • 一手货源
  • 商家通
  • 潮牌工作室
  • 广州市新翼服饰
  • © 烟立秀货源网