Sobes.tech
Junior
114
questionbank

Передается ли в Java данные по ссылке или по значению?

Ответ от нейросети

sobes.tech AI

В Java примитивные типы (byte, short, int, long, float, double, boolean, char) передаются по значению. Копия значения переменной передается в метод.

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

Пример с примитивным типом:

// Примитивный тип int передается по значению
int x = 10;

void modifyPrimitive(int value) {
    value = 20; // Изменяется копия значения
}

// После вызова modifyPrimitive(x), x по-прежнему равно 10.

Пример для объекта:

// Объект передается по значению ссылки
class MyObject {
    int value;
}

MyObject obj = new MyObject();
obj.value = 10;

void modifyObject(MyObject objRef) {
    objRef.value = 20; // Изменяет состояние исходного объекта
    objRef = new MyObject(); // Переприсваивает локальную копию ссылки
    objRef.value = 30;
}

// После вызова modifyObject(obj), obj.value равно 20.
// Ссылка obj по-прежнему указывает на исходный объект.