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 лекция
Недоступна
Измерим температуру тела
Измерим температуру тела
3
Задача
Java Syntax Pro, 3 уровень, 5 лекция
Недоступна
Три числа
Три числа
Комментарии (442)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Юлия Уровень 12
9 мая 2024
Все равно не поняла, почему в этом варианте не компилируется, а ниже компилируется Ведь мы также складываем объекты и числа в обоих вариантах.. Хорошо мы поставили скобочки в строке 4 String text = cat + (a + "Cat is ") + cat + a; Но ведь все равно остается сложение котов и чисел...
cherymara Уровень 1
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 Уровень 1
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 не хватало пробела