Java中的==和equals()区别是什么?

在 Java 中,==和equals()都可以用来比较两个对象是否相等,但它们有很大的区别:

  1. == 是比较运算符,可以比较基本数据类型的值或者对象的引用。
## www.itzhimei.com 代码块
int a = 10;
int b = 10;
a == b; // true

String s1 = new String("abc");
String s2 = new String("abc");
s1 == s2; // false,比较引用
  1. equals()是Object的方法,用于比较对象的内容是否相等。
## www.itzhimei.com 代码块
String s1 = new String("abc");
String s2 = new String("abc");
s1.equals(s2); // true,比较字符串内容
  1. ==比较引用地址,equals()比较内容。
  2. ==可以比较基本类型,equals()只能比较对象。
## www.itzhimei.com 代码块
int a = 10;
int b = 10;
a.equals(b); // 编译错误
  1. 通常在比较对象内容时使用equals(),比较基本类型或引用使用==。
## www.itzhimei.com 代码块
String s1 = "abc";
String s2 = "abc";
s1.equals(s2); // 推荐
s1 == s2; // 不推荐

总结:
==比较地址,equals()比较内容。比较对象时推荐使用equals()。