以下是C#中的解决办法:
public void Change(ref int a, ref int b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。
看来Java至少在这个问题上是落后的。
你定义了a=1,b=2.然后把这两个值当做参数调用了 change(a,b)方法 这个方法的作用只是形参交换数值 ,但对实参没有任何影响。不知道你发现这一点没有 你定义的这两个静态变量 static int a; static int b; 与change(a,b)方法里的a和b根本不是一回事,是两个不同的性质。public static void change(int a,int b)
{
a = a+ b;
b = a - b;
a = a - b;