JavaRush /Курсы /Java Syntax /Конкатенация

Конкатенация

Java Syntax
3 уровень , 5 лекция
Открыта

Фрагмент лекции JavaRush - университета.


— Хочу рассказать тебе, как объединять строки. Склеивание или объединение строк ещё называют таким коротким словом, как конкатенация. Кто любит котов, можно запомнить так: Кон-Котэ-Нация. Шутка.

— Принцип склеивания строк простой. Если мы «складываем» строку и ещё что-то, то это что-то преобразовывается в строку посредством неявного вызова метода toString().

— Ты сейчас с кем разговаривала?

— Лады, буду проще. Если мы складываем строку, число и кота, то число будет преобразовано в строку, и кот будет преобразован в строку. Примеры:

Код Что будет на самом деле
Cat cat = new Cat();
String text = "Cat is " + cat;
Cat cat = new Cat();
String s = cat.toString();
String text = "Cat is " + s;
int a = 5;
String text = "A is " + a;
int a = 5;
String s = Integer.toString(a);
String text = "A is " + s;
int a = 5;
String text = a + "A is ";
int a = 5;
String s = Integer.toString(a);
String text = s + "A is ";
Cat cat = new Cat();
int a = 5;
String text = "Cat is " + cat + a;
Cat cat = new Cat();
String s1 = cat.toString();
String s2 = Integer.toString(a);
String text = "Cat is " + s1 + s2;
Cat cat = new Cat();
int a = 5;
String text = a + "Cat is " + cat + a;
Cat cat = new Cat();
String s1 = cat.toString();
String s2 = Integer.toString(a);
String s3 = Integer.toString(a);
String text = s3 + "Cat is " + s1 + s2;
Cat cat = new Cat();
int a = 5;
String text = cat + a + "Cat is " + cat + a;
Программа не скомпилируется!
Порядок выполнения всех операций сложения: слева направо, получаем:
String text = (((cat + a) + "Cat is ") + cat) + a;
При сложении котов с числами, автоматического преобразования к строке не произойдёт.
//Но можно записать так:
Cat cat = new Cat();
int a = 5;
String text = cat + (a + "Cat is ") + cat + a;

//Это равносильно:
Cat cat = new Cat();
int a = 5;
String text = ((cat + (a + "Cat is ")) + cat)+a;
Cat cat = new Cat();
String s1 = cat.toString();
String s2 = cat.toString();
String s3 = Integer.toString(a);
String s4 = Integer.toString(a);
String text = s1 + s3 + "Cat is " + s2 + s4;

— Вот и пришло время решить несколько задач от Диего.

3
Задача
Java Syntax Pro, 3 уровень, 5 лекция
Недоступна
Измерим температуру тела
Программа считывает с клавиатуры значение температуры тела и выдает сообщение о том, что температура тела высокая, низкая или нормальная, в зависимости от условий. В классе объявлены две булевые переменные isHigh (высокая температура) и isLow (низкая), в которые нужно вынести соответствующие усл
3
Задача
Java Syntax Pro, 3 уровень, 5 лекция
Недоступна
Три числа
Ввести с клавиатуры три целых числа. Определить, есть ли среди них хотя бы одна пара равных между собой чисел. Если такая пара существует, вывести на экран числа через пробел. Если все три числа равны между собой, то вывести все три. Примеры: а) при вводе чисел 1 2 2 получим вывод 2 2 б) при вводе ч
Комментарии (442)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Юлия Уровень 12
9 мая 2024
Все равно не поняла, почему в этом варианте не компилируется, а ниже компилируется Ведь мы также складываем объекты и числа в обоих вариантах.. Хорошо мы поставили скобочки в строке 4 String text = cat + (a + "Cat is ") + cat + a; Но ведь все равно остается сложение котов и чисел...
cherymara Уровень 18
18 августа 2024
Во втором варианте за счет скобок произойдет сложение строки и числа, поэтому число будет преобразовано к строке. При следующем сложении кота с итоговым значением будет уже кот + строка. Важно, чтобы одно слагаемое всегда было строкой в нашем случае, поэтому способ со скобками сработает и сложения кота и числа не будет происходить
vlafriday Уровень 1
25 февраля 2024
25.02.2024 check, мой уровень 3
Cradle Уровень 25
2 ноября 2023
Что это за лекция и почему я могу ее найти, но не могу ее посмотреть
hidden #2544557 Уровень 10 Expert
5 марта 2022
Постоянно одна и та же проблема... после return забываю точку с запятой 😡
Aleksandr Tsovma Уровень 3
30 ноября 2021
Бился, бился с конвертером времени, и компилируется, но все время ошибки. Глядь, а в названии convertToSeconds в конце нет буквы "s". И досмотрел же компилятор!
Andrey Ganin Уровень 17
13 декабря 2021
Вот тоже самое почти было! Но после первой неудачной попытки, мне повезло первым дело посмотреть на название метода 😁😁😁
24 декабря 2021
Я много курсов по программированию начинал, и везде куча людей на этом спотыкается. Потому всегда копипащу из условия.
51_Drummer Уровень 25
29 января 2022
Я по этой причине всегда копипащу из задания все запрашиваемые текста или имена переменных/методов/классов в среду
Yodzimura Уровень 4
8 мая 2021
package com.javarush.task.task03.task0312; /* Конвертируем время */ public class Solution { //напишите тут ваш код public static int convertToSeconds(int s) { return s=s*60; } public static void main(String[] args) { //напишите тут ваш код System.out.println(convertToSeconds(4)); System.out.println(convertToSeconds(2)); } } Проверка запнулась на 2 шаге Метод convertToSeconds должен переводить переданные часы в секунды. Переводит же s=s*60; что я далаю не так ?
Yodzimura Уровень 4
9 мая 2021
Твою ж мать.... минуты!!!! секунды!!!! понял в чем ошибка....
Dimitri Cherniienko Уровень 6
17 мая 2021
нужно было просто умножить дважды на 60
Basil Уровень 5
7 июня 2021
Формула: конвертер часы в секунды = часы*3600; Возвращаем конвертер;
28 февраля 2021
Почему то ячейку памяти выводит, а не данные о коте при:

public class Main {

    public static void main(String[] args) {
        Cattest1 cat1 = new Cattest1();
        cat1.namecat = "Kiparis";
        cat1.agecat = 1;
        cat1.nameovnercat = "Anastasiya";
	    System.out.println("This cat: " + cat1);

	    Cattest1 cat2 = new Cattest1();
	    cat2.namecat = "Kipasa";
	    cat2.agecat = 3;
	    cat2.nameovnercat = "Alex";
	    
	    System.out.println("This cat: " + cat2);

    }
}
public class Cattest1 {
    String namecat;
    int agecat;
    String nameovnercat;
}

28 февраля 2021
Вот ответ компилятора:

This cat: Cattest1@7ef20235
This cat: Cattest1@27d6c5e0
Подскажите плз, мб я что-то не правильно понял?
Wiun Уровень 16
3 марта 2021
выводит объект и адрес в памяти, это было совсем пару страниц назад
chiffka Уровень 35 Expert
1 мая 2021
По умолчанию, если вызвать ToString(), будет напечатано имя как название пакета + адрес в памяти. Вы это и получили. ToString() у вас вызывается неявно, когда вы конкатенируете "This cat: " и cat1. То есть фактически вы пишите так: "This cat: " + cat1.toString(). Если вам нужно, чтобы выводилось имя кота, то надо в классе написать точно такой же toString() — переопределить: public class Cattest1 { String namecat; int agecat; String nameovnercat; @override public String toString(){ return namecat; } }
Gonsalez Уровень 7
26 февраля 2021
Правильно ли я понимаю, что вместо 1000L можно было написать просто 1000, но только лишь потому что мы видим визуально, что получившийся ответ будет не таким большим и не выйдет за пределы диапазона типа int? И в случае с большими числами нужно всегда указывать суффикс L, которым указываем, чтобы он возвращал число типа long, т.к. компилятор может выдать неправильный ответ?
Alexander G. Уровень 22
6 мая 2021
мне кто-то говорил, что везде используют biginteger
AnKor78rus Уровень 4
24 февраля 2021
Вспоминаем школьный курс: в одном кубическом метре - тысяча литров)
ATLANTIC Уровень 6
28 января 2021
Поясните. Cat cat = new Cat(); int a = 5; String text = "Cat is " + cat + a; Вот что оно выведет на экран. этот text У меня ввдает ошибку из- за Cat
Алексей Уровень 3
13 февраля 2021
У меня всё корректно отработало: вывелся текст "Cat is " + адрес объекта cat в памяти + 5
Sergey Badanin Уровень 10
16 февраля 2021
У меня после Cat is не хватало пробела