Неизменяемость аргументов функций

Рассмотрим функцию Math.round, которая округляет дробь до целого числа:


var number = 7.7
var newNumber = Math.round(number);

System.out.print(newNumber);

На экран выведется число 8.

Но что будет выведено на экран, если вызвать System.out.print(number);? Выведется старое значение: 7.7.

Функция Math.round вернула новые данные, но не изменила переданные в неё данные. Важнее, что она не могла это сделать в принципе, потому что аргументы функций в Java — неизменяемы.

Фактически, можно считать, что если функция f объявлена с каким-то аргументом arg, и она вызывается как f(number), то внутри функции есть переменная arg, и в эту переменную записывается передаваемое значение (которое в этом случае берется из переменной number). Функция может изменять свою переменную arg (находящуюся внутри функции), но такие изменения никак не повлияют на переменную number. Даже если аргумент в сигнатуре функции тоже называется number - это все равно другая переменная number, а не та, значение которой передается в функцию.

Задание

Переведите строку, записанную в переменную str, в верхний регистр, используя функцию toUpperCase. Новое значение запишите в ту же переменную str.

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


Нашли ошибку? Есть что добавить? Пулреквесты приветствуютсяhttps://github.com/hexlet-basics

Упражнение доступно только авторизованным пользователям.

Пожалуйста, авторизуйтесь, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт.