c语言中是用到了指针,指针指向的是同一块内存空间,所以指针指向的内容改变了,那么原本的数据就改变了,但是java中swap(A x, A y),x和y都是引用,也就是x和y里面存放的是实参传递过来实体的地址,进行互换操作之后,x和y指向了互换后的实体,但是外面实参所指向的实体并没有改变,所以没有达到互换效果。如果想要达到c语言里的效果,可以在swap(A x, A y)里面把实体里的数据互换即可。
改变效果如下:
- public static void swap(A x, A y)//互换操作
- { /*
- A temp = x;
- x = y;
- y =temp;
- */
- int temp = x.a;//要完成此操作需把类A的属性a改成非私有的
- x.a = y.a; //或者在类A中设置一个getA()方法
- y.a = temp;
- }
复制代码 |