Рассмотрим, какие возможности есть у языка Java для работы со строками. Для этого начнем работу с простейшей подготовки на языке Java, которая пока реализована только выводом одной строки на консольное окно 'It is program My3".Сохраним его на жестком диске. Для этого щелкнем на кнопку сохранения, создадим новую папку под названием my3. Откроем ее. Для этого щелкнем на ней дважды и введем имя для нашего файла. Как мы помним, большие и маленькие буквы имеют значения, поэтому напишем первую букву М большую, My3, расширением Java и щелкнем на кнопку Сохранить.

Для работы со строками стандартная библиотека языка Java содержит специальный встроенный класс String. Причем надо заметить, что любая строка, которую мы заключим в кавычки, сразу же представляет собой отдельный экземпляр класса String. В языке Java, встроенного типа для строк, такого, как, например, целого числа integer, для действительного real и т. д., нет. Т. е. все, что касается строк, нужно представлять себе в виде экземпляра какого-то класса. Создадим несколько переменных типа String. Для этого щелкнем здесь на кнопку Enter и напишем таким образом. String, создадим экземпляр этого класса. Пусть, например, это будет s1, знак равенства, и сразу присвоим ему какое-либо значение. Для этого, так же, как и при создании любого другого класса, напишем new String.

В скобках укажем кавычки, внутри котрых напишем то, что мы хотим ему присвоить. Например, числа от 1 до 5. Закроем кавычки, скобку и точка с запятой. В принципе путь, который мы выбрали для создания новой строки s1, вполне допустим, но на самом деле, в языке Java встроена поддержка более простой возможности. Для этого мы можем взять тип String, далее возьмем переменную s2. И после знака равенства, мы можем написать прямо то, что мы хотим ему присвоить внутри кавычек. Например, буквы abcd. Закроем кавычки, точка с запятой.

И эта строка инициализации, которая находится выше, и вот эта, которая находится ниже, на самом деле абсолютно равнозначны, обе создают новую строку. Создавать можно не только строку, в которой будет какое-либо значение, но и пустую строку. Для этого напишем здесь запятую, далее s3, знак равенства, и напишем пустую строку, в которой нет ни одного символа. Кроме этого, есть возможность объединения двух строк и присвоение третьей. Для этого напишем таким образом. String, переменная s3, которая будет равняться объединению строки si и s2. Это будет s4.

Для этого напишем si+s2, достаточно простой синтаксис этой операции. Надо отметить, что к строке можно прибавлять не только строку объединения двух строчек, но и можно прибавлять, например, переменные других типов, например, целого типа. И в этом случае, компьютер его преобразует к его символьному представлению. К примеру, возьмем целое число ii.

Введем знак равенства. Присвоим ему какое-либо значение. Например, 5, точка с запятой. И теперь возьмем класс String, s5, знак равенства. И пусть он является объединением строки s2, прибавить i1, точка с запятой. То же самое можно сделать и, используя вместо переменной, просто обыкновенные числа. Напишем таким образом. String, s6, знак равенства. Далее опять s2, плюс 5. Вот эти два выражения на самом деле абсолютно идентичны. И в том и в другом случае, мы получим одно и то же. Теперь к 5 добавим еще какое-либо число. Например, 2, точка с запятой.

Правда, к выражению такого типа надо быть осторожным. Потому что, если мы ниже напишем такую строку, как String si, знак равенства, s2, прибавить, в скобках 5+2, то результат выполнения вот этого выражения будет уже совсем другим. Будет не точка s2, т.е. abcd, 5, 2, а строчка abcd, и 1, как результат суммы 5+2. Посмотрим, как все это будет выглядеть. Для этого распечатаем значение этих переменных, которые у нас есть. Для этого воспользуемся функцией println и скопируем ее в буфер обмена. Сору, далее правая кнопка мыши, Paste.

Выведем сначала s4, закроем скобку, точка с запятой. Правая кнопка мыши, Paste. Далее s5, закроем скобку, точка с запятой. Правая кнопка мыши Paste, s6. И выведем последнее значение si. Закроем скобку, точка с запятой. Теперь попробуем все это скомпилировать. Для этого Tools, Compile Java, далее Run Java Application, запустим на выполнение. И вот можно видеть, что у нас получилось. 54 у нас равняется s1+s2, т.е. 12345, а затем abcd, что и выведено в этой строчке. Причем можно видеть, что между цифрами и буквами abcd, нет никакого пробела, они идут подряд. Затем, у нас есть сумма s2 и числа 5, что будет обозначать abcd и далее 5. В следующей строке к 5 еще добавлено 2, что отражается на нашем экране, а затем, в последней строке, сначала выполняется операция 5+2, получается 7, и далее выводится все это на экран.

Закроем теперь консольное окно и вернемся в режим редактирования. Из любой строки можно выделить и подстроку. Для этого, в классе String существует специальный метод substring. Посмотрим, как это делается. Для этого возьмем String, переменную s8, которая будет равняться следующей строчке. Кавычки и далее напишем My First String. Закроем кавычки, запятая. И далее возьмем переменную s9, которая будет равняться какой-либо части из строки s8. Для этого возьмем таким образом.

S8, далее точка и метод substring. В скобках возьмем числа 3 и 7, закроем скобку, точка с запятой. Что означают числа 3 и 7? Тройка означает номер позиции в строке s8, начиная с которой мы и хотим взять букву из этой строки. Причем, надо сказать, что нумерация начинается с 0, т.е. буква М это нулевой символ, Y- первый, пробел будет второй, а буква F будет третим символом. Число 7 означает номер символа, до которого мы и хотим взять символы из этой строки. Если попробовать вывести это все на консоль, для этого опять правая кнопка мыши, Paste, далее выведем сначала s8, чтобы у нас было с чем сравнивать, а затем опять правая кнопка мыши, Paste и выведем на экран s9. Закроем скобку, точка с запятой.

Теперь попробуем все это выполнить. Для этого Tools, Compile Java, далее Run Java Application, и можно видеть результат выполнение этой программы. Сначала мы выводим My first string на экран, а затем символы с 3 по 7. Т.е. получается f i, r, и s. Как мы и сказали, буква f у нас стоит на третьей позиции, а буква t, в слове first, стоит на 7 позиции. Поэтому, копируются и используются все буквы до буквы t, до 7 позиции. И получается то, что мы видим на экране. Закроем это окно. Отметим теперь, что для определения длины строки в языке Java существует специальный метод length, длина. Попробуем определить длину строки.

Для этого возьмем переменную типа integer. Пусть длина строки будет n, знак равенства, определим длину строки s8, строки My first string. Напишем s8, точка, ее метод length, затем скобки, точка с запятой. Вот теперь, в переменной n мы поместили длину строки. Для того чтобы выделить отдельный символ, в языке Java существует тоже специальный метод charAt. Если мы возьмем таким образом, char, далее last, последний символ, знак равенства. Выделим последний символ в этой строке s8. Для этого s8, точка, charAt. В скобках укажем номер позиции этого символа. Поскольку мы хотим последний, для этого мы можем воспользоваться вот этой функцией length, показать номер n. Напишем n, поскольку, как мы помним, нумерация в строке у нас начинается с 0, поэтому последним символом будет ни n, а n-1. Закроем скобку, точка с запятой. Попробуем все это вывести на экран. Для этого, опять воспользуемся правой кнопкой мыши, далее Paste. Выведем таким образом, length, длина, знак равенства, плюс. Напишем значение n, плюс и далее выведем последнюю букву lastchar, знак равенства, закроем кавычки, плюс и вот этот символ last. Закроем скобки, точка с запятой. Посмотрим, что у нас получилось.

Для этого скомпилируем. Tools, Compile Java. Далее Run Java Application. Теперь надо запустить программу.И, как можно увидеть, мы получили то, что ожидали. Длина нашей строки My first string равна 15 буквам, включая пробелы и последний знак, буква g, что в принципе так и есть. Закроем окно и вернемся обратно в наш текстовый редактор.

6.7.3.10. Строки. Изменение, сравнение, работа с ними После того, как мы выяснили возможность выбора отдельного элемента из нашей строки, возникает вопрос, а нельзя ли этот элемент изменить? Оказывается в языке Java это сделать нельзя. В принципе это противоречит тем навыкам, которые вырабатываются при работе с другими языками программирования. Например, с таким, как C, где любая строка- это объединение отдельных ее символов. И поэтому, замена любой из ее букв не вызывает никаких и затруднений. В языке же Java, это происходит совсем по-другому. Например, что бы поменять какую-либо букву в строке, можно поступить следующим образом.

Разбить ее на несколько частей, заменив ту часть, которую мы хотим заменить на какую-либо другую, затем все это сложить и присвоить к той же самой переменной. Конечно, это достаточно сложный путь, но, тем не менее, это так. Это связано с тем, что такие неизменяемые строки имеют большие преимущества, компилятор может делать строки совместно используемыми, и при этом происходит работа со строками, выигрыш во времени работы с ними, и в эффективности. Попробуем в строчке My first string заменить маленькую

букву s, на S большую. Для этого можно написать таким образом, напишем переменную s8, далее знак равенства, опять s8 и ее подстроку substring, которая начинается с нулевого символа и кончается девятым символом. 9-й символ является пробелом в данном случае.

Закроем скобку. Плюс. Теперь напишем в кавычках вместо этой маленькой буквы s, которая здесь стоит, большую букву S. Затем плюс, и опять s8 с подстрокой substring, начиная от следующей 10-й позиции и уже до конца, до n. N, как мы помним, равняется длине этой строки. Вот это место, где мы определили n, как длину строки s8. Точка с запятой. Теперь попробуем все это вывести на наш экран. Для этого опять правая кнопка мыши, Paste, как мы помним, метод println у нас находится в памяти все время, и далее выведем s8 на экран. Закроем скобку, точка с запятой.

А теперь скомпилируем, Tools и Compile Java, далее Tools, Run Java Application, как мы видим, мы получили My first String уже с большой буквой S, String, т.е. в языке Java мы поменяли одну букву в строковой переменной. Закроем это окно. Для того чтобы проверить, совпадают ли две строки, можно использовать метод equals. Можно написать таким образом. Как мы помним, строка s1 равняется 1, 2, 3, 4, 5, поэтому выведем на наше консольное окно уравнение, в котором указано, равняется ли оно какой-либо строке. Для этого, правая кнопка мыши, Paste.

Вот теперь мы получилиprintln, и далее напишем таким образом. S1, точка. Далее метод equals, скобка. И строка для сравнения. Напишем ту же самую строчку 1, 2, 3, 4, 5. Закроем кавычки, скобки, и точка с запятой. Теперь опять правая кнопка мыши, Paste. И на этот раз напишем несколько по-другому. Сравним s1 equals с какой-либо другой строкой. Например, A, B, C, D. Закроем кавычки, скобки. Точка с запятой. А теперь, посмотрим, что у нас получилось. Для этого Tools, Compile Java, далее Tools, Run Java Application, и как мы видим, выполнение первого из этих операторов, вызывает результат True, поскольку s1 у нас как раз и равняется 1, 2, 3, 4, 5.

А выполнение следующей за ним строки вызывает ответ False. Поскольку s1 не равняется A, B, C, D. Закроем теперь наше консольное окно и отметим, что-то же самое можно написать несколько по-другому. Щелкнем на правую кнопку мыши, Paste, мы получили println. Затем в кавычках напишем опять какую-либо строку. Например, ту же самую 1, 2, 3, 4, 5, кавычки, точка. Используем эту строку как раз в качестве переменной строкового класса. Далее equals, откроем скобки, и опять 1, 2, 3, 4, 5, закроем кавычки, скобки, точка с запятой. Т.е. вот в этой строчке 1, 2, 3, 4, 5 мы сравниваем опять-таки с 1, 2, 3, 4, 5. Результат, конечно же, должен получаться такой. Просто в этой строке строку мы использовали в качестве переменной, в качестве экземпляра класса String.

Теперь же отметим еще одно обстоятельство, использование вот такого значка двойного равенства для сравнения двух строчек, на самом деле не правомочно. Поскольку, написать такое можно, это не воспримется в качестве синтаксической ошибки, но результат может быть совершенно непредсказуемым. Потому что при сравнении, компьютер сравнивает на самом деле не две строки, а две ссылки. Приведем пример такого порядка. Как мы помним, результат сравнения si и 1, 2, 3, 4, 5 у нас был True, поскольку si равняется этой строке. Напишем это немножко другим образом. Для этого правая кнопка мыши, Paste, si и на этот раз воспользуемся знаком сравнения равенства. И далее в кавычках 1, 2, 3, 4, 5.

Закроем скобку, точка с запятой. Так вот, результат выполнения вот этого оператора, будет False, поскольку s1 и как раз равен этой строке, но на самом деле, как ссылка, это два совершенно различных участка памяти. Посмотрим, так ли это. Для этого Tools, Compile Java. Теперь Tools, Run Java Application, и как мы видим, результат выполнения нашего последнего оператора будет False. 51 и 1, 2, 3, 4, 5, это совершенно различные вещи, хотя, как строчки они одинаковые. Но и предыдущий оператор выдал нам результат True. Результат сравнения 1, 2, 3, 4, 5 самим с собой, как с оператором, выдал нам результат True. Закроем данное окно.

Из всего этого можно сделать следующий вывод, пользоваться этим оператором для сравнения двух строчек совершенно нежелательно. Поскольку мы можем получить совершенно непредсказуемый результат. Если это один и тот же ресурс, мы будем получать равенство, а если - разные, то будем получать значение False. Хотя, как строчки, это может быть абсолютно одинаковые выражения. Рассмотрим теперь основные методы, которые есть у класса String в языке Java.

Они выведены вот в эту сводную таблицу, которую мы можем видеть на экране. Первый из них это метод charAt, с которым мы уже сталкивались и который возвращает символ, расположенный в указанной позиции, в позиции индекс. Следующий метод, метод compareTo, позволяет сравнивать две строки и возвращает отрицательное значение, если строка предшествует строке other в лексикографическом порядке, и положительное значение, если эта строка other предшествует ей. А также выдает значение 0, если две строки совпадают.

Этот метод очень полезен, если мы хотим расположить строчки в алфавитном порядке. Следующий метод, метод endsWith, позволяет определить оканчивается ли данная строка под строкой suffix. Если это верно, то возвращается значение True, а в противном случае, значение False. А метод equals, с которым мы уже знакомы, сравнивает две строки. Если они равны друг другу, то выдается значение True, а если они не равны, не совпадают, то выдается ответ False. Следующий метод, метод equalslgnoreCase сравнивает две строки без учета регистра, без учета больших и маленьких букв.

Если они с этими условиями не учета регистра равны, то тогда выдается True, а в противном случае - False. Метод index, так же, как и метод индекс Of, помогает найти подстроку str в исходной строке. И возвращает начало первой подстроки, совпадающей с этой строкой, начиная с позиции 0 в первом случае, или, начиная с позиции fromlndex во втором случае.

Следующие два метода очень похожи на то, что мы только что обсуждали, они возвращают начало последней подстроки, равной этой строке str. Начиная с позиции 0 или с позиции fromlndex во втором варианте. Метод length возвращает длину нашей строки. А метод replace возвращает в новую строку, которая получается заменой всех символом oldChar на символы newChar. Метод startWidth позволяет определить, начинается ли наша строка подстрокой prefix.

Если это верно, возвращается True, в противном случае, возвращается в False. Следующие два метода, которые называются одинаково, это методы substring. У них различное количество передаваемых параметров. Возвращают в новую строку, которая состоит из всех символов, начиная с beginlndex, и заканчивая концом строки в первом случае, или же заканчивая позицией endlndex, не включая при этом именно эту позицию во втором случае.

Следующие два метода toLowercase и toUpperCase, превращают нашу строку в новую строку, преобразовывая при этом прописные буквы в строчные в первом варианте. И наоборот, все строчные буквы в прописные во втором варианте. Последний, выписанный здесь метод trim, который возвращает новую строку, из которой исключены все предшествующие и последующие пробелы.

Операторы | TeachPro WEB-дизайн | Ввод данных с диалоговым окном и операции с ними