Рассматриваю метод multiply(String s). (строка 8)
строка 9. переменной String result присваивается (в моем случае) " ->"
строка 10. Цикл (здесь все понятно)
строка 12. переменной result присваивается значение " ->" + "java" (result=result + s;)
строка 14. Срабатывает оператор return result; и возвращает значение в метод main( поправьте если ошибаюсь, а я где-то точно ошибаюсь)
выводом в консоль ->java
Затем начинает отрабатывать цикл. И, внимание вопрос, почему выводится в консоль только ->javajavajavajavajava? Почему не ->java->java->java->java->java?
И если переменной result присваивается значение "java" + " ->" (result = s + result;), то вывод в консоль уже другой javajavajavajavajava ->.
Как этот код отрабатывает? Если можно, то построчно строка №, строка № ит.д. Или ссылку киньте, где можно поподробнее вникнуть. Заранее благодарю!
Павел
17 уровень
Не могу понять, как выполняется код. Объясните, если не сложно.
Решен
Рассматриваю метод multiply(String s). (строка 8)
строка 9. переменной String result присваивается (в моем случае) " ->"
строка 10. Цикл (здесь все понятно)
строка 12. переменной result присваивается значение " ->" + "java" (result=result + s;)
строка 14. Срабатывает оператор return result; и возвращает значение в метод main( поправьте если ошибаюсь, а я где-то точно ошибаюсь)
выводом в консоль ->java
Затем начинает отрабатывать цикл. И, внимание вопрос, почему выводится в консоль только ->javajavajavajavajava? Почему не ->java->java->java->java->java?
И если переменной result присваивается значение "java" + " ->" (result = s + result;), то вывод в консоль уже другой javajavajavajavajava ->.
Как этот код отрабатывает? Если можно, то построчно строка №, строка № ит.д. Или ссылку киньте, где можно поподробнее вникнуть. Заранее благодарю!
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Павел
9 апреля 2020, 23:40
код начинает выполняться с метода main
строка 24
затем 25 начинает работать метод multiply
затем строки 8,9,10?
0
Сергей ШершавинExpert
9 апреля 2020, 23:20
Что-то вы перемудрили. Требуется всего лишь вернуть повторенную 5 (или count) раз исходную строку. Никаких стрелочек не нужно. В условии просто пример того во что должна превратиться исходная строка.
+1
Павел
9 апреля 2020, 23:31
Задача уже решена, это я для наглядности в консоль вывел "java". Но ход выполнения кода так и не пойму. Почему result = result +s отрабатывает только первый раз, если находится в цикле?
0
Сергей ШершавинExpert
10 апреля 2020, 08:08полезный
в смысле только первый раз? У вас есть ссылка result на строковый объект в куче и вы с ним работаете в цикле:
до цикла он инициализирован: " ->"
на первой итерации конкатенация строки "java": " ->java"
на второй итерации снова конкатенация строки "java" к уже измененному объекту на предыдущей итерации: " ->javajava"
и так далее...
В случае result = s + result; вы просто делаете конкатенацию с другой стороны и исходная строка сдвигается в конец.
Для наглядности прибавляйте не одну и ту же строку, а например номер итерации, увидите как всё будет меняться
+2
Павел
10 апреля 2020, 08:28
Блин, ответ был на поверхности. Я и про конкатенацию вчера читал статьи. Весь мозг сломал, пока думал как идет выполнение кода, а понять никак не мог в чем дело. Огромнейшее спасибо!!!
0