我们先来看一种方法:
public class Demo {
int x=100;
int y=200;//定义x和y的值
public void xchan(int x,int y){
int z=x;
x=y;
y=z;//令x和y进行互换
System.out.println("x="+x);//输出换之后x的值
System.out.println("y="+y);//输出换之后y的值
}
public static void main(String[] args) {
Demo obj=new Demo();//面向对象
obj.xchan(obj.x,obj.y);指向Demo里面的x和y
}
}
第一种的延伸:
public class Demo {
int a=100;
int b=200;
public void show(){
System.out.println("a="+a);
System.out.println("b="+b);
}
public void xch(int x,int y){
int z=x;
x=y;
y=z;
a=x;
b=y;
}
public static void main(String[] args) {
Demo obj=new Demo();
obj.xch(obj.a,obj.b);
obj.show();
}
}
第二种:(用和互换)
public class Demo {
int a=100;
int b=200;
public void show(){
System.out.println("a="+a);
System.out.println("b="+b);
}
public void xch(int x,int y){
x=x+y;
y=x-y;
x=x-y;
a=x;
b=y;
}
public static void main(String[] args) {
Demo obj=new Demo();
obj.xch(obj.a,obj.b);
obj.show();
}
}
第三种:(用异或运算)
public class Demo {
int a=100;
int b=200;
public void show(){
System.out.println("a="+a);
System.out.println("b="+b);
}
public void xch(int x,int y){
x=x^y;
y=x^y;
x=x^y;
a=x;
b=y;
}
public static void main(String[] args) {
Demo obj=new Demo();
obj.xch(obj.a,obj.b);
obj.show();
}
}
另外(拓展):
如果程序里形参实参用的同样的变量但是没有回到本类,如:
public class Demo {
int a=100;
int b=200;
public void show(){
System.out.println("a="+a);
System.out.println("b="+b);
}
public void xch(int a,int b){
a=a+b;
b=a-b;
a=a-b;
}
public static void main(String[] args) {
Demo obj=new Demo();
obj.xch(obj.a,obj.b);
obj.show();
}
}
这个时候两数并没有互换,是因为同样的变量名程序并不知道引用的是哪个,所以就默认的是本类的,那么它在xch这个类里面进行互换运算之后就没了,并没有对本类的值有影响,如果想要用,应该引用本类的,如:
public class Demo {
int a=100;
int b=200;
public void show(){
System.out.println("a="+a);
System.out.println("b="+b);
}
public void xch(int a,int b){
a=a+b;
b=a-b;
a=a-b;
this.a=a;//本类变量
this.b=b;//本类变量(实际上就这一点不同)
}
public static void main(String[] args) {
Demo obj=new Demo();
obj.xch(obj.a,obj.b);
obj.show();
}
}