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 по-прежнему указывает на исходный объект.