equals与==的区别

104 阅读1分钟

在Java中,equals 方法和 == 运算符用于比较对象,但它们之间有重要的区别:

  1. == 运算符

    • == 运算符用于比较两个对象的引用是否相同,即它们是否指向内存中的同一个地址。
    • 对于基本数据类型(如 intchar 等),== 运算符比较的是它们的值。
  2. equals 方法

    • equals 方法是 Object 类中的一个方法,用于比较两个对象的内容是否相同。
    • 默认情况下,equals 方法的行为与 == 运算符相同,但许多类(如 StringInteger 等)都重写了 equals 方法,以比较对象的内容而不是引用。

示例

使用 == 比较对象引用

String str1 = new String("hello");
String str2 = new String("hello");

System.out.println(str1 == str2); // 输出 false,因为 str1 和 str2 是不同的对象,尽管内容相同

使用 equals 比较对象内容

String str1 = new String("hello");
String str2 = new String("hello");

System.out.println(str1.equals(str2)); // 输出 true,因为 str1 和 str2 的内容相同

总结

  • ==:比较对象的引用是否相同。
  • equals:比较对象的内容是否相同(需要类重写 equals 方法)。