Целое значение неизменное - вы не можете изменить свои значения. Перемещение, которое происходит внутри функции свопинга, относится к ссылкам, а не значениям.
Вам нужно будет вернуть обе ссылки в массиве для достижения желаемого
static Integer[] swap(Integer a, Integer b) {
return new Integer[]{b, a};
}
public static void main(String[] args) {
Integer a = 1;
Integer b = 2;
Integer[] intArray = swap(a, b);
a = intArray[0];
b = intArray[1];
System.out.println("a=" + a + " b=" + b);
}
Если Integer имел метод setValue, вы могли бы сделать что-то вроде этого.
static void swap(Integer a, Integer b) {
int temp = a.intValue();
a.setValue(b.intValue());
b.setValue(temp);
}
Но это не так, чтобы достичь того, чего вы хотите, верните массив.