Назад к вопросам
Junior
69
questionbank
Как параметры передаются в методах в Java?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
В Java параметры в методах передаются по значению (pass-by-value).
Примитивные типы:
- Передается копия значения примитива. Изменение параметра внутри метода не влияет на исходную переменную вне его.
// Пример для примитивного типа
public void changeValue(int x) {
x = x + 10; // Изменяется копия x внутри метода
}
// Использование:
int original = 5;
changeValue(original);
// original останется равным 5
Объекты (ссылочные типы):
- Передается копия ссылки на объект. Обе ссылки (исходная и в параметре метода) указывают на один и тот же объект в памяти.
- Изменение состояния объекта (например, вызов сеттера, модификация полей) через переданную ссылку внутри метода отразится на исходном объекте.
- Переприсваивание параметра на новый объект внутри метода не изменит исходную ссылку вне его.
// Пример для ссылочного типа (объект)
public class MyObject {
private int value;
public MyObject(int value) {
this.value = value;
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
public void modifyObject(MyObject obj) {
obj.setValue(100); // Изменяется состояние исходного объекта
}
public void reassignObject(MyObject obj) {
obj = new MyObject(200); // Параметр obj теперь ссылается на новый объект, исходная ссылка не меняется
}
// Использование:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject теперь имеет value = 100
MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject все еще ссылается на исходный объект с value = 50
Кратко: Передается значение ссылки (ее адрес), а не сам объект. Это создает возможность модификации объекта по этой ссылке, но не возможность изменить саму исходную ссылку на другой объект.