为什么交换不成功
public class AssignNewObject {
public void swap(MyData my){
my = new MyData(); //考虑堆空间此新创建的对象,和 main 中的 data 对象是否有关
int temp = my.x;
my.x = my.y;
my.y = temp;
}
public static void main(String[] args) {
AssignNewObject tools = new AssignNewObject();
MyData data = new MyData();
data.x = 1;
data.y = 2;
System.out.println("交换之前:x = " + data.x +",y = " + data.y);//
tools.swap(data);//调用完之后,x 与 y 的值交换?
System.out.println("交换之后:x = " + data.x +",y = " + data.y);//
}
}
class MyData{
int x ;
int y;
}
把下面的 my = new MyData(); 注释掉就可以交换了
public class AssignNewObject {
public void swap(MyData my){
// my = new MyData(); //考虑堆空间此新创建的对象,和 main 中的 data 对象是否有关
int temp = my.x;
my.x = my.y;
my.y = temp;
}
public static void main(String[] args) {
AssignNewObject tools = new AssignNewObject();
MyData data = new MyData();
data.x = 1;
data.y = 2;
System.out.println("交换之前:x = " + data.x +",y = " + data.y);//
tools.swap(data);//调用完之后,x 与 y 的值交换?
System.out.println("交换之后:x = " + data.x +",y = " + data.y);//
}
}
class MyData{
int x ;
int y;
}
public void swap(MyData my){
my = new MyData(); //考虑堆空间此新创建的对象,和 main 中的 data 对象是否有关
int temp = my.x;
my.x = my.y;
my.y = temp;
}
你这里my对象又重新赋值了,导致你的my是个全新的对象。 所以失效
哥们,你这个swap里边的my = new MyData()明显又为my实例创建了新的引用,当然就和之前的无关了,肯定交换不了啊
如有问题欢迎指出,