Бесплатный курс по java. Зарегистрируйтесь для отслеживания прогресса →

Java: Неизменяемость аргументов метода

Рассмотрим метод Math.round(), который округляет дробь до целого числа:


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

System.out.println(newNumber); // => 8

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

Метод Math.round() вернул новые данные, но не изменил переданные в него данные. Важнее, что он не мог это сделать в принципе, потому что аргументы методов в Java — неизменяемы.

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

Задание

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

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


Советы

  • Изучить сигнатуру метода toUpperCase можно на странице java.lang.String


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