Java строки больше меньше

Как сравнить строки в Java? Сравниваем строки в Java

В этой статье мы рассмотрим операторы и методы сравнения строк в Java. Поговорим про особенности использования оператора == , а также про методы equals(), equalsIgnoreCase и compareTo(), т. к. они используются чаще всего.

Оператор для сравнения строк «==»

В первую очередь, надо сказать, что этот оператор проверяет и сравнивает не значения, а ссылки. С его помощью вы сможете проверить, являются ли сравниваемые вами элементы одним и тем же объектом. Когда 2 переменные String указывают на тот же самый объект в памяти, сравнение вернёт true, в обратном случае — false.

В примере выше литералы интернируются компилятором, в результате чего ссылаются на один и тот же объект.

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

Вышеприведённые переменные String указывают уже на различные объекты.

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

Здесь тоже вышеприведенные переменные 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"); >// указывает уже на другой объект, возвращая false if(new String("Java") == "Java")< System.out.println("Statement is true"); >else < System.out.println("Statement is false"); >// указывает тоже на другой объект, возвращая 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()

Сравнение строк с помощью equals позволяет проверять исходное содержимое строки. Метод возвращает true, когда параметр — объект String, представляющий собой ту же строку символов, что и объект:

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

Когда надо выполнить проверку, имеют ли 2 строки одинаковое значение, мы можем задействовать 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()

С помощью метода equalsIgnoreCase() вы выполните сравнение строк, что называется, лексикографически, причём различия регистра будут игнорированы. Здесь значение true возвращается в том случае, если аргумент является объектом 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(). Когда 2 строки совпадают, compareTo() вернёт значение «ноль» (результат = 0). Сравнивая 2 строки, он вернёт положительное целое число (результат > 0), если 1-й объект String следует за 2-й строкой. Соответственно, метод вернёт отрицательный результат (результат < 0), когда 1-й объект String будет предшествовать 2-й строке:

 
result1 == result2 :возвращается 0; result1 > result2 :возвращается положительное значение; result1 < result2 : возвращается отрицательное значение.

Приведём пример:

На этом всё, очень надеемся, что этот материал будет вам полезен при сравнении строк в "Джава".

При подготовке статьи использовалась публикация «String Comparison in Java».

Хотите знать больше? Приходите на курс!

Источник

Java строки больше меньше

У сравнения строки не совсем корректно показывать метод сканер и не говорить ,что мы туда напишем ибо тогда совсем нет понимания какую информацию мы обрабатываем и смысл от неё. И чутка плохие примеры с .trim() или сделайте больше или сделайте там например для " Привет ", " При вет ".

 "Good news everyone!".replaceAll("o.", "-o-"); //Вывод: "G-o-d news every-o-e!" 

точка после "o" означает, количество символов после "o", которые будут перекрываться заменяемыми символами. Т.е. выражение "o." означает, что вместо "o" будет "-o", а следующий за "o" символ будет заменен на "-". Таким образом, если в рассматриваемом выражении добавить после "o" еще одну точку "o..", то вывод на экран будет другим:

 "Good news everyone!".replaceAll("o..", "-o-"); //Вывод: "G-o- news every-o-!" 
 "Good news everyone!".replaceAll("o", "-o-"); //Вывод: "G-o--o-d news every-o-ne!" 

int compareTo(String str) - описание метода неверное. данный метод выполняет равнение первых символов сроки в числовом эквиваленте в описании compareToIgnoreCase то же самое. прошу исправить Compares two strings lexicographically. Returns an integer indicating whether this string is greater than (result is > 0), equal to (result is = 0), or less than (result is < 0) the argument. String one = "a"; String two = "c"; System.out.println(one.compareTo(two)); // -2

Почему в этой задаче в int index2 = path.indexOf("/", index + 2); обязательно index+2? Я дебажил этот код и если 2 не прибавишь то index2 остается равной 6 а не 16!НОО!! 6+2=8 По какому принципу находится второй бэкслэш?

Источник

Строки в Java, методы класса String

Для работы со строками в Java существует класс String. И для объявления новой строки можно использовать один из способов:

String str1 = "Java"; String str2 = new String(); // пустая строка String str3 = new String(new char[] {'h', 'e', 'l', 'l', 'o'}); String str4 = new String(new char[]{'w', 'e', 'l', 'c', 'o', 'm', 'e'}, 3, 4);

В последнем варианте 3 – это начальный индекс (индексы считаются с нуля), а 4 – это кол-во символов. То есть, строка str4 содержит строку «come».

Важной особенностью строк в Java является их неизменяемость. Это значит, что в строке нельзя попросту изменить какой-либо символ и получить другую строку. Все строки создаются и существуют в неизменном виде, пока не будут уничтожены (как правило, автоматически сборщиком мусора). А переменные str1, str2, str3 и str4 следует воспринимать лишь как ссылки на эти строки. То есть, в любой момент в программе можно записать такую конструкцию:

что означает изменение ссылки str1 на строку «hello», на которую указывает ссылка str3. Соответственно, если на первую строку «Java» не будет указывать никакая ссылка, то она автоматически уничтожается.

Разберем работу часто используемых методов класса String. Первый метод, как написано, возвращает длину строки. Например, если нам дана вот такая строка

то метод length() вернет значение 4

применить метод toCharArray():

char[] helloArray = str1.toCharArray();

то получим массив символов с содержимым этой строки. Следующий пример. У нас есть пустая строка

тогда мы можем определить это, например, так:

if(s.length() == 0) System.out.println("String is empty");
if(s isEmpty()) System.out.println("String is empty");

Но, если строка задана вот так:

то это означает, что ссылка s не указывает ни на какой класс String и, соответственно, мы не можем вызывать методы этого класса. В этом случае проверку следует делать так:

if(s != null && s.length() == 0) System.out.println("String is empty");

мы здесь сначала проверяем: указывает ли ссылка s на объект класса и если это так, то только потом будет идти обращение к методу length().

Объединение строк

Для соединения строк можно использовать операцию сложения ("+"):

String str1 = "Java"; String str2 = "Hello"; String str3 = str1 + " " + str2; System.out.println(str3); // Hello Java

При этом если в операции сложения строк используется не строковый объект, например, число, то этот объект преобразуется к строке:

Еще один метод объединения - метод join() позволяет объединить строки с учетом разделителя. Например, две строки

String str1 = "Java"; String str2 = "Hello";

будут сливаться в одно слово "HelloJava", если их объединить с помощью оператора +:

но если мы хотим, чтобы две подстроки при соединении были разделены пробелом, то можно воспользоваться методом join() следующим образом:

String str3 = String.join(" ", str2, str1); // Hello Java

В общем случае вместо пробела здесь можно ставить любой разделитель в виде строки.

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

Извлечение символов и подстрок

Для извлечения символов по индексу в классе String определен метод

Он принимает индекс, по которому надо получить символов, и возвращает извлеченный символ:

String str = "Java"; char c = str.charAt(2); System.out.println(c); // v

(здесь как и в массивах первый индекс равен 0).

Если надо извлечь сразу группу символов или подстроку, то можно использовать метод

getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

  • srcBegin: индекс строки, с которого начинается извлечение символов;
  • srcEnd: индекс строки, до которого идет извлечение символов;
  • dst: массив символов, в который будут извлекаться символы;
  • dstBegin: индекс массива dst, с которого надо добавлять извлеченные из строки символы.
String str = "Hello world!"; int start = 6; int end = 11; char[] dst=new char[end - start]; str.getChars(start, end, dst, 0); System.out.println(dst); // world

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

Для простого сравнения строк используются методы equals() (с учетом регистра) и equalsIgnoreCase() (без учета регистра). Оба метода в качестве параметра принимают строку, с которой сравниваются:

String str1 = "Hello"; String str2 = "hello"; System.out.println(str1.equals(str2)); // false System.out.println(str1.equalsIgnoreCase(str2)); // true

Обратите внимание, что в отличие сравнения числовых и других данных примитивных типов для сравнения строк не рекомендуется использовать оператор ==. То есть, записывать вот такое сравнение лучше не использовать:

(хотя, оно тоже будет работать). Вместо этого следует использовать метод equals() класса String. Другая пара методов: int compareTo(String str) и int compareToIgnoreCase(String str) также сравнивают строки между собой, но в отличие от equals() они еще позволяют узнать больше ли одна строка другой или нет. Если возвращаемое значение этих методов больше 0, то первая строка больше второй, если меньше нуля, то, наоборот, вторая больше первой. Если строки равны, то возвращается 0. Для определения больше или меньше одна строка, чем другая, используется лексикографический порядок. То есть, например, строка "A" меньше, чем строка "B", так как символ 'A' в алфавите стоит перед символом 'B'. Если первые символы строк равны, то в расчет берутся следующие символы. Например:

String str1 = "hello"; String str2 = "world"; String str3 = "hell"; System.out.println(str1.compareTo(str2)); // -15 - str1 меньше чем str2 System.out.println(str1.compareTo(str3)); // 1 - str1 больше чем str3 System.out.println(str1.compareTo(str1)); // 0 - str1 равна str1
  • ignoreCase: надо ли игнорировать регистр символов при сравнении (если значение true, то регистр игнорируется);
  • toffset: начальный индекс в вызывающей строке, с которого начнется сравнение;
  • other: строка, с которой сравнивается вызывающая;
  • oofset: начальный индекс в сравниваемой строке, с которого начнется сравнение;
  • len: количество сравниваемых символов в обеих строках.
String str1 = "Hello world"; String str2 = "I work"; boolean result = str1.regionMatches(6, str2, 2, 3); System.out.println(result); // true

Поиск в строке

Метод indexOf() находит индекс первого вхождения подстроки в строку, а метод lastIndexOf() - индекс последнего вхождения. Если подстрока не будет найдена, то оба метода возвращают -1:

String str = "Hello world"; int index1 = str.indexOf('l'); // 2 int index2 = str.indexOf("wo"); //6 int index3 = str.lastIndexOf('l'); //9 System.out.println(index1+" "+index2+" "+index3);

Метод startsWith() позволяют определить начинается ли строка с определенной подстроки, а метод endsWith() позволяет определить заканчивается строка на определенную подстроку:

String str = "myfile.exe"; boolean start = str.startsWith("my"); //true boolean end = str.endsWith("exe"); //true System.out.println(start+" "+end);

Замена в строке

String str = "Hello world"; String replStr1 = str.replace('l', 'd'); // Heddo wordd String replStr2 = str.replace("Hello", "Bye"); // Bye world System.out.println(replStr1); System.out.println(replStr2);

Обрезка строк

String str = " hello world "; str = str.trim(); // hello world System.out.println(str);

Метод substring() возвращает подстроку, начиная с определенного индекса до конца или до определенного индекса:

String str = "Hello world"; String substr1 = str.substring(6); // world String substr2 = str.substring(3,5); //lo System.out.println(substr1); System.out.println(substr2);

Изменение регистра

Метод toLowerCase() переводит все символы строки в нижний регистр, а метод toUpperCase() - в верхний:

String str = "Hello World"; System.out.println(str.toLowerCase()); // hello world System.out.println(str.toUpperCase()); // HELLO WORLD

Разбиение строки на подстроки

Метод split() позволяет разбить строку на подстроки по определенному разделителю. Разделитель – это какой-нибудь символ или набор символов (передается в качестве параметра). Например, разобьем текст на отдельные слова (учитывая, что слова разделены пробелом):

String text = "Я люблю язык Java!"; String[] words = text.split(" "); for(String word : words) System.out.println(word);

Источник

Читайте также:  Css span in option
Оцените статью