Java | ==, equals (), compareTo (), equalsIgnoreCase () и compare ()
Есть много способов сравнить две строки в 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 и многому другому, см. Полный курс подготовки к собеседованию .
- Метод 1: использование оператора ==