海南省城乡住房建设厅网站,天元建设集团有限公司在哪个区,做网站找个人,wordpress 版块在 Java 中新建一个类Test#xff1a;
class Test {int a;
}在Main方法中创建两个 Test 对象#xff0c;并给 a 赋不同的值。
写一个 exchange 方法#xff0c;在方法中交换两个Test 对象#xff0c;最后输出两个对象中 a 的值。
public class Main {public static void…在 Java 中新建一个类Test
class Test {int a;
}在Main方法中创建两个 Test 对象并给 a 赋不同的值。
写一个 exchange 方法在方法中交换两个Test 对象最后输出两个对象中 a 的值。
public class Main {public static void main(String[] args) {Test test new Test();Test test1 new Test();test.a 1;test1.a 2;exchange(test, test1);System.out.println(test.a , test1.a);}public static void exchange(Test a, Test b) {Test temp a;a b;b temp;}
}
最后输出的结果是多少 很神奇交换居然失效了
我们画个图来探究一下运行时的情况
代码开始运行时 new 两个 Test 对象 会创建一个栈帧放入栈中栈帧中存着两个对象的地址分别指向存在堆中的数据。 在运行到exchange方法时Java 会新建一个栈帧并把 test 和 test1 都复制一份过去。 在exchenge方法运行后 在exchange方法运行结束后该方法的栈帧出栈 所以最后输出为 1, 2。
如果这样写的话最后输出结果就是2, 1了。
public class Main {public static void main(String[] args) {Test test new Test();Test test1 new Test();test.a 1;test1.a 2;Test temp test;test test1;test1 temp;System.out.println(test.a , test1.a);}
}