Программирование на языке Java

         

Равенство Метод equals и оператор



Равенство

Метод equals и оператор == выполняют две совершенно различных проверки. Если метод equal сравнивает символы внутри строк, то опе-ратор == сравнивает две переменные-ссылки на объекты и проверяет, указывают ли они на разные объекты или на один и тот же. В очеред-ном нашем примере это хорошо видно - содержимое двух строк оди-наково, но, тем не менее, это - различные объекты, так что equals и == дают разные результаты. class EqualsNotEqualTo { public static void main(String args[]) { String s1="Hello"; String s2=new String(s1); System.out.println(s1+"equals"+s2+"->"+s1.equals(s2)); System.out.println(s1+"=="+s2+",->"+(s1==s2)); } }

Вот результат запуска этого примера: C:\> java EqualsNotEqualTo Hello equals Hello -> true Hello == Hello -> false

Упорядочение

Зачастую бывает недостаточно просто знать, являются ли две строки идентичными. Для приложений, в которых требуется сортировка, нужно знать, какая из двух строк меньше другой. Для ответа на этот вопрос нужно воспользоваться методом compareTo класса String. Если целое значение, возвращенное методом, отрицательно, то строка, с которой был вызван метод, меньше строки-параметра, если положительно - больше. Если же метод compareTo вернул значение 0, строки идентичны. Ниже приведена программа, в которой выполняется пузырьковая сорти-ровка массива строк, а для сравнения строк используется метод compareTo. Эта программа выдает отсортированный в алфавитном порядке список строк. class SortString { static String arr[] = {"Now", "is", "the", "time", "for", "all", "good", "men", "to", "come", "to", "the", "aid", "of", "their", "country" }; public static void main(String args[]) { for (int j = 0; i < arr.length; j++) { for (int i = j + 1; i < arr.length; i++) { if (arr[i].compareTo(arr[j]) < 0) { String t = arr[j]; arr[j] = arr[i]; arr[i] = t; } } System.out.println(arr[j]); } } }



Содержание раздела