JavaRush /Курсы /Модуль 1. Java Syntax /Примеры работы со строками

Примеры работы со строками

Модуль 1. Java Syntax
2 уровень , 4 лекция
Открыта

1. Конкатенация — склеивание строк

Есть очень интересная и простая вещь, которую можно делать со строками в Java — их можно склеивать. Такая операция называется конкатенация. Ну или чтобы легче запомнилось — Кон-Котэ-Нация. Хотя часто ее называют «склеивание строк» или даже просто «сложение строк».

Чтобы склеить две строки, нужно использовать знак +. Это очень просто:

"значение1" + "значение2"
Конкатенация двух строк

Примеры:

Команда Примечание
String name = "Аня" + "Аня";
name содержит строку АняАня
String city = "New York" + "Аня";
city содержит строку New YorkАня
String message = "Hello! " + "Аня";
message содержит строку Hello! Аня

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

Примеры:

Команда Примечание
String name = "Аня";
String city = "New York";
String message = "Hello!" + city + name + city;
name содержит строку Аня
city содержит строку New York
message содержит строку
Hello!New YorkАняNew York

В последнем примере видно, что текст в переменной message плохо читается, т.к. в нем не хватает пробелов. Чтобы задать один пробел или несколько, нужно просто написать их в коде и обернуть в двойные кавычки. Это проще, чем кажется:

" "
Строка, содержащая один пробел

Кстати, если между кавычками совсем не оставить места (написать две двойные кавычки подряд), получится так называемая «пустая строка»:

""
Пустая строка

С одной стороны, она вроде бы и есть, а с другой, при ее выводе на экран ничего не выводится. И при склейке с другими строками ничего не происходит. Эдакий аналог нуля, только для строк.


2
Задача
Java Syntax Pro, 2 уровень, 4 лекция
Недоступна
Полнометражная картина
В переменной centimeters записано количество сантиметров. В переменную meters нужно записать количество полных метров в centimeters. (1 метр = 100 см). Для вычисления используй переменную centimeters и оператор деления. Для объявления и инициализации meters используй одну команду.

2. Преобразование к строковому типу

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

Более того, это автоматически происходит, когда мы складываем тип String с каким-нибудь другим типом. Примеры:

Команда Примечание
int a = 5;
String name = "Аня" + a;
name содержит строку Аня5
int a = 5;
String city = a + "New York" + a;
city содержит строку 5New York5
int number = 10;
String code = "Yo";
String message = "Hello! " + number + code;
message содержит строку Hello! 10Yo

Во всех трех примерах мы спокойно складывали переменные типа int и String, и в результате всегда получался тип String.

Арифметические операции с типом String проводить нельзя. Даже если строка целиком состоит из цифр.

Примеры:

Команда Примечание
int a = 5;
String name = "1" + a;
name содержит строку 15
int a = 5;
String city = a + "9" + a;
city содержит строку 595
int number = 10;
String code = "10";
String message = "" + number + code;
message содержит строку 1010

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

Команда Примечание
int a = 5;
String name = a + a + "1" + a;
name содержит строку 1015
Порядок выполнения: ((a + a) + "1") + a

3. Преобразование строки в число

Чтобы преобразовать число в строку в Java, достаточно сложить его и пустую строку:

String str"" + число;
Преобразование числа в строку

А вот что делать, если нужно преобразовать строку в число? Ну, любую строку в число преобразовать нельзя. Но вот если строка состоит только из цифр, то все-таки можно. Для этого есть специальный метод у класса Integer.

Выглядит эта команда так:

int x = Integer.parseInt(строка);

Где int x – это объявление целочисленной переменной x, а строка — это число заданное в виде строки (строка состоящая из цифр).

Примеры:

Команда Примечание
String str = "123";
int number = Integer.parseInt(str);
number содержит число 123;
int number = Integer.parseInt("321");
number содержит число 321
int number = Integer.parseInt("321" + 0);
number содержит число 3210
int number = "321";
Не скомпилируется: переменная типа int, а значение типа String

4. Перевод объекта/примитива в строку

Для перевода экземпляра любого Java-класса или любого примитивного типа данных к строковому представлению, можно использовать метод String.valueOf():

public class StringExamples {
    public static void main(String[] args) {
        String a = String.valueOf(1);
        String b = String.valueOf(12.0D);
        String c = String.valueOf(123.4F);
        String d = String.valueOf(123456L);
        String s = String.valueOf(true);

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(s);
        
        /*
        Вывод:
        1
        12.0
        123.4
        123456
        true
         */
    }
}

5. Некоторые методы работы со строками

Ну и напоследок хотелось бы рассказать о нескольких методах типа String.

Метод length()

Метод length() позволяет узнать длину строки – сколько в ней символов.

Примеры:

Команда Примечание
String name = "Rome";
int count = name.length();
count содержит значение 4
int count = "".length();
count содержит значение 0
String name = "Rom";
int count = (name + 12).length();
count содержит значение 5

Да, методы можно вызывать у всего, что имеет тип String, даже у выражения:

(name + 12).length()
Вызов метода length() у выражения типа String

Метод toLowerCase()

Метод toLowerCase() позволяет преобразовать все символы строки в маленькие (строчные):

Примеры:

Команда Примечание
String name = "Rom";
String name2 = name.toLowerCase();
name2 содержит строку rom
String name = "".toLowerCase();
name содержит пустую строку
String name = "ROM123";
String name2 = name.toLowerCase();
name2 содержит строку rom123

Метод toUpperCase()

Метод toUpperCase() позволяет преобразовать все символы строки в большие (заглавные):

Примеры:

Команда Примечание
String name = "Rom";
String name2 = name.toUpperCase();
name2 содержит строку ROM
String name = "rom123";
String name2 = name.toUpperCase();
name2 содержит строку ROM123

2
Задача
Java Syntax Pro, 2 уровень, 4 лекция
Недоступна
Последняя цифра числа
В переменной number записано число. В переменную lastDigit нужно записать последнюю цифру этого числа. Для вычисления используй переменную number и оператор «остаток от деления». Для объявления и инициализации lastDigit используй одну команду. Подсказка: делить нужно на 10.
2
Задача
Java Syntax Pro, 2 уровень, 4 лекция
Недоступна
9-ка это перевернутая 6-ка
Используя только оператор инкремента, измени значение в переменной six, чтобы на экран вывелась цифра 9.
2
Задача
Java Syntax Pro, 2 уровень, 4 лекция
Недоступна
Когда-то было 32 зуба
Используя только оператор декремента, измени значение переменной toothCounter, чтобы на экран вывелось число 23.
Комментарии (22)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Max Уровень 91
8 октября 2024
Вот где были мои глаза все эти 30 минут? "чтобы все буквы в этих строках стали строчными." ВСЕ !!!
Максим Уровень 16 Expert
19 января 2024
Третий раз возвращаюсь к обучению, не хватает пинков реальных.
Taurnil Уровень 110 Expert
21 января 2024
Одними пинками делу не поможешь... Ты сам должен захотеть. Необходимо, чтобы обучение воспринималось как какое-то достижение, в котором есть цель, и было удовольствие от процесса. Последнее - самое важное, я считаю. Я прошел автоматизированный курс полностью, потом решил взять стажировку. Потому что в ней разбираются технологии, необходимые мне для понимания кода в проекте, куда я стремлюсь уйти. В комплекте со стажировкой я получил доступ к курсу университета, где первые два раздела у меня уже "пройдены". Решил перечитать, освежить в памяти XD
Roman Уровень 3
5 ноября 2024
Должен захотеть уже звучит как какое то насилие.
Александр Антонов Уровень 2 Expert
20 марта 2025
всё программирование это ежедневное насилие твоего мозга)
Павел Уровень 5 Expert
9 января 2024
хах, мда, вечер взрывающихся пуканов 😂
Павел Уровень 5 Expert
10 января 2024
hidden #3247435 Уровень 4
18 февраля 2023
упомянули примитивы без описания , что это такое?
hidden #2920280 Уровень 9
7 декабря 2021
не понятно почему спереди скобка не ставиться в RESUME
   System.out.println(("RESUME").toLowerCase());
компилятор выдает ошибку а в правильном ответе ее всего лишь нет.
13 ноября 2023
Зачем тебе там скобка?
Виктор Шефф Уровень 111 Expert
3 декабря 2021
Комментарий для потомков: Мы выживали как могли! Смотри на уровень, если он превысил 10-й, значит у нас получилось! 🤠
Андрей Уровень 25 Expert
24 ноября 2022
Ты смог, дружище! что помогло?
Виктор Шефф Уровень 111 Expert
25 ноября 2022
Только интерес. Больше нет никакой мотивации, должно быть тупо интересно разобраться.
13 января 2024
Оставлю тоже здесь комментарий. Посмотрим, если уровень превысил 10-й, значит получилось :)
Тася Уровень 22
2 декабря 2021
Почему нельзя вызвать метод .toLowerCase для всего выражения, которое находится в методе System.out.println()? Ведь в задании сказано вызвать метод .toLowerCase у строк, речь не идёт о каждой отдельной переменной...

System.out.println(("CAREER: " + career).toLowerCase());
При запуске всё выводится строчными, но счётчик проверок тикал до тех пор, пока для каждой отдельной переменной не прописала .toLowerCase... 😶
Владимир Уровень 48 Expert
3 декабря 2021
Внимательнее смотрите на комментарий валидатора. У меня была та же проблема, но ругался он на самом деле только на первую строку, ты там, скорее всего как и йа, сделала

("RESUME").toLowerCase()
Остальные строки сделал как ты и валидатор пропустил.
DataForce Уровень 1
3 декабря 2021
Почему нельзя? У меня работает

System.out.println("RESUME".toLowerCase());
...
System.out.println(("CAREER: " + career).toLowerCase());
Сранно, конечно, что не работает со скобками первый вызов.
Олег Ошурков Уровень 2 Expert
4 декабря 2021
тренажер для использования метода из теории
Павел Уровень 28
13 декабря 2021
Не работает (("RESUME").toLowerCase()); , потому что скобки нужны для выражения, а "RESUME" это не выражение. Скобки меняют порядок вычисления выражения, либо объединяют две сущности, и на результате получившегося значения, уже вызывают метод за скобкой ("a" + 10).someFunc();
Артём Уровень 41
2 декабря 2021
("Винни Пух").toUpperCase() а чего скомпилировалось, отвечает условию но не прошло решение?
2 июня 2022
Мужик, ты чё, за полгода до 41 уровня дошёл??? Или тут где-то срезать можно? Если да, то респект и уважуха!
Диба Уровень 109 Expert
2 декабря 2021
тут шушутька мозг поболит у новичков