// 成员变量 值交换
// 局部变量值 交换 此法错误 !!!! 局部变量的作用域 仅在 方法内部 , 仅仅 此方法内 a和b的值 更改了 。
// 局部变量值 交换 正确做法 使用数组
package day05;
/**
* 交换两个变量的值
*
* 成员变量 值交换
*
* 局部变量 值交换 , 基础类型的局部变量作用域 仅在 其方法内部。
*
*
*
* @author Administrator
*
*/
public class TestSWAP {
public static void main(String[] args) {
UtilC u=new UtilC();
int a= 10;
int b=4;
u.a=5;
u.b=6;
// a b 的值 未交换
u.swap1(a,b);
System.out.println("a="+a+"\t b="+b);
// a b的值 交换
int[] in = new int[2];
in[0]=a;
in[1]=b;
u.swap2(in);
System.out.println("a="+in[0]+"\t b="+in[1]);
// u.a u.b的值 交换
u.swap();
System.out.println("u.a="+u.a+"\t u.b="+u.b);
}
}
/**
* 两个数交换
* @author Administrator
*
*/
class UtilC{
int a;
int b;
// 成员变量 值交换
public void swap(){
int temp=a;
a=b;
b=temp;
}
// 局部变量值 交换 此法错误 !!!! 局部变量的作用域 仅在 方法内部 , 仅仅 此方法内 a和b的值 更改了 。
public void swap1(int qa ,int qb){
int temp=qa;
qa=qb;
qb=temp;
}
// 局部变量值 交换 正确做法
public void swap2(int[] arr){
int temp=arr[0];
arr[0]=arr[1];
arr[1]=temp;
}
}