#java
Подскажите, пожалуйста. Как заставить это работать? public static void main(String[] args) { int a = 0; int b = 3; swap(a, b); } public static void swap (int x, int y){ int tmp = x; x = y; y = tmp; }
Ответы
Ответ 1
Примитивы передаются не по ссылке. В вашем коде меняются лишь локальные копии на стеке в методе swap. Можно завернуть во что-то. Часто делают так: public class IntRef { public int value; public IntRef (int val) { value = val; } } Тогда ваш код будет таким: public static void main(String[] args) { IntRef a = new IntRef(0); IntRef b = new IntRef(3); swap(a,b); } public static void swap (IntRef x, IntRef y){ int tmp = x.value; x.value = y.value; y.value = tmp; }Ответ 2
В джаве нет передачи переменных по ссылке, поэтому сделать swap двух переменных невозможно. Можно менять поля у объектов, но получается, что вместо двух переменных нужно иметь 2 поля (2 поля у одного объекта, либо по 1 полю у двух объектов), но это явно не то, что имело бы смыл делать.
Комментариев нет:
Отправить комментарий