Метод Java String compareTo () используется для лексикографического сравнения двух строк. Каждый символ обеих строк преобразуется в значение Unicode для сравнения. Если обе строки равны, то этот метод возвращает 0, иначе он возвращает положительное или отрицательное значение. Результат является положительным, если первая строка лексикографически больше, чем вторая строка, иначе результат будет отрицательным.
Java String compareTo () метод
У нас есть два следующих способа использования метода compareTo ():
int CompareTo (String str)
Здесь сравнение между строковыми литералами. Например, string1.compareTo(string2)
где string1 и string2 являются строковыми литералами.
int compareTo (Object obj)
Здесь сравнение проводится между строкой и объектом. Например, string1.compareTo("Just a String object")
где string1 является литералом, и его значение сравнивается со строкой, указанной в аргументе метода.
Пример метода Java String compareTo ()
Здесь у нас есть три строки, и мы сравниваем их друг с другом с помощью метода compareTo()
.
открытый класс CompareToExample {public static void main (String args []) {String str1 = "Учебник по строковому методу";String str2 = "пример метода сравнения";String str3 = "Учебник по строковому методу";int var1 = str1.compareTo (str2);System.out.println ("сравнение str1 и str2:" + var1);int var2 = str1.compareTo (str3);System.out.println ("сравнение str1 и str3:" + var2);int var3 = str2.compareTo ("пример метода сравнения");System.out.println ("str2 сравнение аргументов строки:" + var3);} }
Выход:
сравнение str1 и str2: -16 сравнение str1 и str3: 0 str2 сравнение аргументов строки: 0
Как найти длину строки с помощью метода String compareTo ()
Здесь мы увидим интересный пример того, как использовать метод compareTo (), чтобы найти длину строки. Если мы сравним строку с пустой строкой с помощью метода compareTo (), метод вернет длину непустой строки.
Например:
String str1 = "Неган"; String str2 = ""; //пустой строкой // он вернул бы длину str1 в положительном числе str1.compareTo (str2); // 5 // он вернул бы длину str1 в отрицательном числе str2.compareTo (str1); // - 5
В приведенном выше фрагменте кода второй оператор compareTo () возвратил длину в отрицательном числе, потому что мы сравнили пустую строку с str1, а в первом операторе CompareTo () мы сравнили str1 с пустой строкой.
Давайте посмотрим полный пример:
открытый класс JavaExample { public static void main (String args []) { String str1 = "Корова"; // Это пустая строка String str2 = ""; String str3 = "Коза"; System.out.println (str1.compareTo (str2)); System.out.println (str2.compareTo (str3));} }
Выход:
Является ли метод Java String compareTo () чувствительным к регистру?
В этом примере мы сравним две строки с помощью метода compareTo (). Обе строки одинаковы, однако одна из них в верхнем регистре, а другая - в нижнем.
открытый класс JavaExample {public static void main (String args []) { //верхний регистр String str1 = "HELLO"; // в нижнем регистре String str2 = "привет" ;; System.out.println (str1.compareTo (str2));} }
Выход:
Как вы можете видеть, вывод не равен нулю, что означает, что метод compareTo () чувствителен к регистру . Однако у нас есть метод сравнения без учета регистра в строковом классе, который является compareToIgnoreCase () , этот метод игнорирует регистр при сравнении двух строк.
Если в обеих строках есть место?
Кроме того, если количество символов в обеих строках не равно, то что будет вывод?
Я думаю, что лучшее описание того, что делает этот метод, это то, что он сравнивает ПЕРВЫЙ символ, который не равен в обеих строках. Все, что после этого НЕ будет сравниваться, независимо от того, имеет ли одна строка больше или меньше символов, равны или нет. Промежуточное число, данное в результате, основано на разнице в значении символов в диаграмме ASCII.
Это относится и к пространству. Если пробел помещен как первый отдельный символ в двух строках, он будет сравниваться в зависимости от значений ASCII двух символов.
Например, если вы сравнили символ пробела (который имеет значение ASCII 32) с запятой (который имеет значение ASCII 44), используя метод compareTo (), предполагая, что они являются первыми различными символами, найденными в двух строках , тогда результатом будет разница между 32 и 44, которая равна -12.