Сравнение строк в Java

Класс Java String имеет ряд методов сравнения строк. Ниже приведены некоторые из часто используемых методов:

Операторы == для сравнения, а не значения, равнозначны, что означает проверку того, являются ли они одним и тем же объектом. Если две переменные String указывают на один и тот же объект в памяти, сравнение возвращает true. В противном случае сравнение возвращает false.

 
"Java" == "Java" // true

Здесь литералы интернируются компилятором и, таким образом, ссылаются на один и тот же объект

 
new String("Java") == "Java" // false

Выше двух переменных String указывают на другой объект в памяти

 
new String("Java") == new String("Java") // false

Выше двух переменных String указывают на другой объект в памяти

Важно отметить, что оператор '==' не сравнивает содержимое внутри объектов String. Он сравнивает только ссылки, на которые указывают две строки.

Пример

 
class TestClass{
  public static void main (String[] args){
    // ссылаемся на один и тот же объект и возвращаем true
    if(  "Java" == "Java" ){
      System.out.println("Statement  is true");
    }else{
      System.out.println("Statement is false");
    }
    // укажем на другой объект в памяти return false
    if(new String("Java") == "Java"){
      System.out.println("Statement  is true");
    }else{
      System.out.println("Statement is false");
    }
    // укажем на другой объект в памяти return false
    if(new String("Java") == new String("Java") ){
      System.out.println("Statement  is true");
    }else{
      System.out.println("Statement is false");
    }
  }
}

Выход

 
Statement  is true
Statement is false
Statement is false

Метод String equals()

Метод Java String equals() проверяет исходное содержимое (т. Е. Те же значения) строки. Метод equal() возвращает true, если параметр представляет собой объект String, который представляет собой ту же строку символов, что и этот объект.

 
Objects.equals("Java", new String("Java")) // true

Если вы хотите проверить, имеет ли две строки одинаковое значение, вы, вероятно, захотите использовать Objects.equals().

Пример

 
class TestClass{
  public static void main (String[] args)	{
    String str1 = "Java";
    String str2 = "Java";
    String str3 = "ASP";
    String str4 = "JAVA";
    String str5 = new String("Java");
    // оба равны и возвращают true
    if(str1.equals(str2)){
      System.out.println("Statement  is true");
    }else{
      System.out.println("Statement is false");
    }
    // оба не равны и возвращают false
    if(str1.equals(str3)){
      System.out.println("Statement  is true");
    }else{
      System.out.println("Statement is false");
    }
    // оба не равны и возвращают false
    if(str1.equals(str4)){
      System.out.println("Statement  is true");
    }else{
      System.out.println("Statement is false");
    }
    // оба равны и возвращают true
    if(str1.equals(str5)){
      System.out.println("Statement  is true");
    }else{
      System.out.println("Statement is false");
    }
  }
}

Выход

 
Statement  is true
Statement is false
Statement is false
Statement  is true

String equalsIgnoreCase

Java String equalsIgnoreCase Сравнивает две строки лексикографически, игнорируя различия в случае. Возвращает true тогда и только тогда, когда аргумент является объектом String, который представляет ту же последовательность символов, что и этот объект. Если вы хотите протестировать свои строки для равенства без учета регистра, вы можете использовать метод equalsIgnoreCase класса String.

Пример

 
class TestClass{
  public static void main (String[] args){
    String str1 = "Java";
    String str2 = "JAVA";
    // возвращаем true, потому что оба равны в случае нечувствительности
    if(str1.equalsIgnoreCase(str2)){
      System.out.println("Statement  is true");
    }else{
      System.out.println("Statement is false");
    }
    // возвращает false, потому что учитывает регистр
    if(str1.equals(str2)){
      System.out.println("Statement  is true");
    }else{
      System.out.println("Statement is false");
    }
  }
}

Выход

 
Statement  is true
Statement is false

Метод String compareTo()

Метод compareTo используется, когда нам нужно определить порядок строк лексикографически. Он сравнивает значения char, аналогичные методу equals. Если две строки точно совпадают, метод compareTo возвращает значение 0 (result is = 0). Он возвращает положительное (результат> 0) целое число, если первый объект String следует за второй строкой. Метод compareTo возвращает отрицательный результат (результат <0), если первый объект String предшествует второй строке.

 
    result1 == result2  :returns 0
    result1 > result2   :returns positive value
    result1 < result2   :returns negative value

Пример

 
class TestClass{
  public static void main (String[] args)	{
    String str1 = "Java";
    String str2 = "Java";
    String str3 = "ASP";
    int val = 0;
    val = str1.compareTo(str2);
    System.out.println(val);
    val = str1.compareTo(str3);
    System.out.println(val);
    val = str3.compareTo(str1);
    System.out.println(val);
  }
}

Выход

 
0
9
-9

Источник: http://net-informations.com/Java/string/compare.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector