Back to questions
IT One
Junior — Middle
68
Каким образом можно обеспечить передачу аргумента в функцию по значению, а не по ссылке?
Companies where asked
Answer from AI
sobes.tech AI
В Java все аргументы передаются в методы по значению. Однако для объектов передается значение ссылки на объект, а не сам объект. Чтобы обеспечить передачу по значению (то есть чтобы изменения внутри метода не влияли на исходный объект), можно:
- Использовать примитивные типы (int, double и т.д.), они передаются по значению напрямую.
- Для объектов создавать копию (клонировать объект) и передавать копию в метод.
Пример с копированием объекта:
class Point {
int x, y;
Point(int x, int y) { this.x = x; this.y = y; }
Point(Point p) { this.x = p.x; this.y = p.y; } // конструктор копирования
}
void movePoint(Point p) {
p.x += 10;
p.y += 10;
}
Point original = new Point(5, 5);
Point copy = new Point(original); // создаём копию
movePoint(copy); // изменяем копию
// original останется без изменений
Таким образом, изменения внутри метода не затронут исходный объект.