Вот мой код для замены двух чисел с использованием класса-обертки. Мне известно о том факте, что Java имеет только передачу по значению, поэтому мы не можем использовать что-то вроде указателя для передачи адреса переменных. Для этого я создал объектыдля класса-оболочки Целое число a, b.
Но этот код не работает, комментарии в разделе кода объясняют мой подход. Может кто-нибудь сказать, пожалуйста, где я ошибся.
class swp{
public static void main(String[] args) {
Integer x = new Integer(5); //x --> obj with 5 int value
Integer y = new Integer (6); //y --> obj with 6 int value
System.out.println("x = "+ x+ " " +"y = " + y);
swap(x,y);
System.out.println("x = " + x+ " " +"y = " + y);
}
//the values in x and y are copied in a and b
static void swap(Integer a,Integer b){ //a ,x--> obj with 5 int value .b,y --> obj with 6 int value
int temp = a.intValue(); // temp contains 5
a = b.intValue() ; // value at the obj ref. by a has changed to 6
b = temp; //value at the obj ref. by a has changed to 5
System.out.println("in func : "+"a = " + a+ " " +"b = " + b);
}
}
вывод
a = 5 b = 6
in func : a = 6 b = 5
a = 5 b = 6
Я знаю, что мог бы сделать это, используя следующий подход
void swap(class_name obj1,class_name obj2){
int temp = obj1.x;
obj1.x =obj2.x;
obj2.x = temp;
}
Но я хочу знать, что именно не так смой подход.