Java | ==, equals (), compareTo (), equalsIgnoreCase () и compare ()

Опубликовано: 3 Декабря, 2021

Есть много способов сравнить две строки в Java:

  • Использование оператора ==
  • Использование метода equals ()
  • Использование метода compareTo ()
  • Использование метода compareToIgnoreCase ()
  • Использование метода compare ()

    Ниже приводится подробное объяснение каждого метода:

    • Метод 1: использование оператора ==

      Оператор двойного равенства используется для сравнения двух или более чем двух объектов. Если они ссылаются на один и тот же объект, верните true, в противном случае верните false. Строка неизменна в java. Когда два или более объекта создаются без ключевого слова new, оба объекта ссылаются на одно и то же значение. Оператор двойного равенства фактически сравнивает ссылки на объекты.

      Пример ниже иллюстрирует использование == для сравнения строк в Java:

      // Java program to demonstrate
      // use of == operator in Java
      class GFG {
      public static void main(String[] args)
      {
      // Get some Strings to compare
      String s1 = "A" ;
      String s2 = "A" ;
      String s3 = "A" ;
      String s4 = new String( "A" );
      // Compare s1 and s2
      // It should return true as they both
      // refer to same object in memory
      System.out.println(s1 + " == " + s2
      + ": " + (s1 == s2));
      // Compare s1 and s3
      // It should return true as they both
      // refer to same object in memory
      System.out.println(s1 + " == " + s3
      + ": " + (s1 == s3));
      // Compare s2 and s3
      // It should return true as they both
      // refer to same object in memory
      System.out.println(s2 + " == " + s3
      + ": " + (s2 == s3));
      // Compare s1 and s4
      // It should return fasle as they both
      // refer to different object in memory
      System.out.println(s1 + " == " + s4
      + ": " + (s1 == s4));
      }
      }
      Выход:
      A == A: верно
      A == A: верно
      A == A: верно
      A == A: ложь
      
    • Метод 2: использование метода equals ()

      В Java метод string equals () сравнивает две заданные строки на основе данных / содержимого строки. Если все содержимое обеих строк одинаково, возвращается значение true. Если все символы не совпадают, возвращается false.

      Пример ниже иллюстрирует использование .equals для сравнения строк в Java:

      // Java program to demonstrate
      // use of .equals operator in Java
      class GFG {
      public static void main(String[] args)
      {
      // Get some Strings to compare
      String s1 = "A" ;
      String s2 = "A" ;
      String s3 = "a" ;
      String s4 = new String( "A" );
      // Compare s1 and s2
      // It should return true as they both
      // have the same content
      System.out.println(s1 + " .equals " + s2
      + ": " + s1.equals(s2));
      // Compare s1 and s3
      // It should return false as they both
      // have the different content
      System.out.println(s1 + " .equals " + s3
      + ": " + s1.equals(s3));
      // Compare s2 and s3
      // It should return false as they both
      // have the different content
      System.out.println(s2 + " .equals " + s3
      + ": " + s2.equals(s3));
      // Compare s1 and s4
      // It should return true as they both
      // have the same content
      System.out.println(s1 + " .equals " + s4
      + ": " + s1.equals(s4));
      }
      }
      Выход:
      A. Равно A: true
      A. Равно a: false
      A. Равно a: false
      A. Равно A: true
      
    • Метод 3: использование метода compareTo ()

      В интерфейсе Java Comparable сравниваются значения и возвращается int, эти значения int могут быть меньше, равны или больше. Сравнение двух строк в java основано на значении Unicode каждого символа в строках. Если две строки различны, то они имеют разные символы в некотором индексе, который является допустимым индексом для обеих строк, или их длина различна, или и то, и другое.
      Предполагая, что в индексе 'i' символы отличаются, то compareTo () вернет firstString.charAt (i) -secondString.charAt (i) .

      Пример ниже иллюстрирует использование .compareTo для сравнения строк в Java:



      // Java program to demonstrate
      // use of .compareTo operator in Java
      class GFG {
      public static void main(String[] args)
      {
      // Get some Strings to compare
      String s1 = "A" ;
      String s2 = "A" ;
      String s3 = "a" ;
      String s4 = new String( "A" );
      // Compare s1 and s2
      // It should return 0 as they both
      // have the same ASCII value
      System.out.println(s1 + " .compareTo " + s2
      + ": " + s1.compareTo(s2));
      // Compare s1 and s3
      // It should return -32 as they both
      // have the different ASCII value
      System.out.println(s1 + " .compareTo " + s3
      + ": " + s1.compareTo(s3));
      // Compare s3 and s2
      // It should return 32 as they both
      // have the different ASCII value
      System.out.println(s3 + " .compareTo " + s2
      + ": " + s3.compareTo(s2));
      // Compare s1 and s4
      // It should return 0 as they both
      // have the same ASCII value
      System.out.println(s1 + " .compareTo " + s4
      + ": " + s1.compareTo(s4));
      }
      }
      Выход:
      A .compareTo A: 0
      A .compareTo a: -32
      a .compareTo A: 32
      A .compareTo A: 0
      
    • Метод 4. Использование метода equalsIgnoreCase ()

      Метод Java String equalsIgnoreCase () очень похож на метод equals (), за исключением того, что регистр игнорируется, как в приведенном выше примере String объект s4 сравнивается с s3, тогда метод equals () возвращает false, но здесь в случае equalsIgnoreCase () он вернет true . Следовательно, метод equalsIgnoreCase () нечувствителен к регистру.

      Пример ниже иллюстрирует использование .equalsIgnoreCase для сравнения строк в Java:

      // Java program to demonstrate
      // use of .equalsIgnoreCase operator in Java
      class GFG {
      public static void main(String[] args)
      {
      // Get some Strings to compare
      String s1 = "A" ;
      String s2 = "A" ;
      String s3 = "a" ;
      String s4 = new String( "A" );
      // Compare s1 and s2
      // It should return true as they both
      // have the same content
      System.out.println(s1 + " .equalsIgnoreCase " + s2
      + ": " + s1.equalsIgnoreCase(s2));
      // Compare s1 and s3
      // It should return true as they both
      // have the same content being case insensitive
      System.out.println(s1 + " .equalsIgnoreCase " + s3
      + ": " + s1.equalsIgnoreCase(s3));
      // Compare s2 and s3
      // It should return true as they both
      // have the same content being case insensitive
      System.out.println(s2 + " .equalsIgnoreCase " + s3
      + ": " + s2.equalsIgnoreCase(s3));
      // Compare s1 and s4
      // It should return true as they both
      // have the same content
      System.out.println(s1 + " .equalsIgnoreCase " + s4
      + ": " + s1.equalsIgnoreCase(s4));
      }
      }
      Выход:
      A .equalsIgnoreCase A: истина
      A .equalsIgnoreCase a: true
      A .equalsIgnoreCase a: true
      A .equalsIgnoreCase A: истина
      
    • Метод 5: использование метода compare ()

      В Java для сравнения с конкретным языковым стандартом следует использовать класс Collator, который находится в пакете java.text. Одна из наиболее важных функций класса Collator - это возможность определять наши собственные правила сравнения.

      Пример ниже иллюстрирует использование метода compare () в Java для сравнения строк:

      // Java program to demonstrate
      // use of collator.compare operator in Java
      import java.text.Collator;
      class GFG {
      public static void main(String[] args)
      {
      // Get Collator instance
      Collator collator = Collator.getInstance();
      // Get some Strings to compare
      String s1 = "A" ;
      String s2 = "A" ;
      String s3 = "a" ;
      String s4 = new String( "A" );
      // Compare s1 and s2
      // It should return 0 as they both
      // have the same ASCII value
      System.out.println(s1 + " collator.compare " + s2
      + ": " + collator.compare(s1, s2));
      // Compare s1 and s3
      // It should return 1
      System.out.println(s1 + " collator.compare " + s3
      + ": " + collator.compare(s1, s3));
      // Compare s3 and s2
      // It should return -1
      System.out.println(s3 + " collator.compare " + s2
      + ": " + collator.compare(s3, s2));
      // Compare s1 and s4
      // It should return 0 as they both
      // have the same ASCII value
      System.out.println(s1 + " collator.compare " + s4
      + ": " + collator.compare(s1, s4));
      }
      }
      Выход:
      Collator.compare A: 0
      Collator.com сравните: 1
      a collator.compare A: -1
      Collator.compare A: 0
      

    Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .