Sobes.tech
Junior — Middle

Ինչպե՞ս է Java-ում կատարվում արժեքների փոխանցումը մեթոդներ կանչելիս՝ հղումով կամ արժեքով։

sobes.tech AI

Պատասխան AI-ից

В Java передача параметров в методы осуществляется только по значению. Это означает, что при вызове метода копируется значение аргумента и передается в параметр метода.

Для примитивных типов (int, boolean и т.д.) копируется само значение.

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

Пример:

public class Example {
    public static void changeValue(int x) {
        x = 10; // изменится только локальная копия
    }

    public static void changeObject(Person p) {
        p.setName("New Name"); // изменится объект, на который ссылается p
        p = new Person("Another"); // локальное переназначение ссылки, не влияет на оригинал
    }

    public static void main(String[] args) {
        int a = 5;
        changeValue(a);
        System.out.println(a); // 5

        Person person = new Person("Old Name");
        changeObject(person);
        System.out.println(person.getName()); // "New Name"
    }
}