Разница между equals() и == в Java — код, вывод и объяснение

В этой программе мы научимся различать оператор == и метод equals() при работе со строками.

Пример 1: различие между == и equals()

class Main {

  public static void main(String[] args) {

    String name1 = new String("Programiz");
    String name2 = new String("Programiz");

    System.out.println("Check if two strings are equal");

    // check if two strings are equal
    // using == operator
    boolean result1 = (name1 == name2);
    System.out.println("Using == operator: " + result1);

    // using equals() method
    boolean result2 = name1.equals(name2);
    System.out.println("Using equals(): " + result2);
  }
}

Вывод:

Check if two strings are equal
Using == operator: false
Using equals(): true

В примере выше мы использовали оператор == и метод equals(), чтобы проверить, равны ли две строки. Здесь:

  • == проверяет, равны ли ссылки на объекты строк. name1 и name2 — это две разные ссылки, поэтому возвращается false.

  • equals() проверяет, равно ли содержимое строковых объектов. Содержимое обоих объектов name1 и name2 одинаковое — Programiz. Поэтому возвращается true.


Пример 2: разница между == и equals()

class Main {

  public static void main(String[] args) {

    String name1 = new String("Programiz");
    String name2 = name1;

    System.out.println("Check if two strings are equal");

    // check if two strings are equal
    // using == operator
    boolean result1 = (name1 == name2);
    System.out.println("Using == operator: " + result1);

    // using equals() method
    boolean result2 = name1.equals(name2);
    System.out.println("Using equals(): " + result2);
  }
}

Вывод:

Check if two strings are equal
Using == operator: true
Using equals(): true

Здесь name1 и name2 ссылаются на один и тот же объект. Поэтому name1 == name2 возвращает true.