练习代码时,写了一个方法来交换两个表力量的值,发现了一个问题;
代码是这样的:
public class textOne {
void transport(int t1,int t2) {
int t;
t=t1;
t1=t2;
t2=t;
System.out.println("方法中t1的值:"+t1);
System.out.println("方法中t2的值:"+t2);
}
public static void main(String arg[]) {
int t1=3;
int t2=7;
textOne p1=new textOne();
p1.transport(t1, t2);
System.out.println("main中t1的值:"+t1);
System.out.println("main中t2的值:"+t2);
}
}
输出
方法中t1的值:7
方法中t2的值:3
main中t1的值:3
main中t2的值:7
为什么方法不能交换main中t1,t2的值;
要怎样用方法交换main中t1,t2的值?
求教各位。
代码是这样的:
public class textOne {
void transport(int t1,int t2) {
int t;
t=t1;
t1=t2;
t2=t;
System.out.println("方法中t1的值:"+t1);
System.out.println("方法中t2的值:"+t2);
}
public static void main(String arg[]) {
int t1=3;
int t2=7;
textOne p1=new textOne();
p1.transport(t1, t2);
System.out.println("main中t1的值:"+t1);
System.out.println("main中t2的值:"+t2);
}
}
输出
方法中t1的值:7
方法中t2的值:3
main中t1的值:3
main中t2的值:7
为什么方法不能交换main中t1,t2的值;
要怎样用方法交换main中t1,t2的值?
求教各位。
你的t1和t2 只是方法内部的局部变量,
你这样做相当于把传进来的参数做了交换, 跟类中的属性没有关系
如果真的想替换的话
可以试试这么做
void transport(int t1,int t2) {
int t;
t=t1;
this.t1=t2;
this.t2=t;
System.out.println("方法中t1的值:"+t1);
System.out.println("方法中t2的值:"+t2);
}
this指定你要交换的变量, 是当前类的变量,而不是方法中的变量
AtomicInteger a = 1, b = 2;
swap(a,b);
System.out.print("a="+ a + ", b="+ b);
}
void swap(Integer a, Integer b){
int temp = a.get();
a.set(b.get());
b.set(temp);
}