@ karthikdivi сказал - toUpperCase () не меняет строку.он возвращает новую строку в верхнем регистре.
Но, насколько я понимаю, вы хотите знать, почему значение объекта изменяется в методе, а не примитивное значение типа данных?
Хотя Java строго обойденазначение, точный эффект зависит от того, передан ли примитивный тип или ссылочный тип.
.
Когда мы передаем примитивный тип методу, он передается по значению.Но когда мы передаем объект методу, ситуация резко меняется, потому что объекты передаются посредством того, что эффективно вызывается по ссылке.Java делает эту интересную вещь, которая является своего рода гибридом между передачей по значению и передачей по ссылке.По сути, параметр не может быть изменен функцией, но функция может попросить параметр изменить себя, вызвав некоторый метод внутри него.
При создании переменной типа класса мы создаем только ссылку наобъект.Таким образом, когда мы передаем эту ссылку методу, получающий его параметр будет ссылаться на тот же объект, на который ссылается аргумент.
Это фактически означает, что объекты действуют так, как если бы они были переданы в методыиспользование call-by-reference.
Изменения объекта внутри метода отражаются в объекте, используемом в качестве аргумента.