Avatar ·

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

大家好!我刚开始学习Java,在比较字符串时遇到了一个令人困惑的情况。我写了一段简单的代码: ```java String a = "Привет"; String b = "Привет"; String c = new String("Привет"); System.out.println(a == b); // true System.out.println(a == c); // false System.out.println(a.equals(c)); // true ``` 为什么 `a == b` 返回 `true`,但 `a == c` 返回 `false`?而且 `equals()` 在这里起什么作用?我以为两个运算符都是比较值的。有什么玄机吗?请像对新手一样解释一下,什么时候用 `==`,什么时候用 `equals()`。我特别想知道这对字符串和其他对象是如何工作的。 <<>>

主要区别:引用比较 vs 内容比较

Java 中 == 和 equals() 的关键区别在于 它们比较的是什么:

  • == — 是引用比较运算符。它检查两个变量是否指向内存中的同一个对象。