public void yourTest(int a, int b) { a++; b++; } public void myTest() { int a = 1; int b = 2; yourTest(b, a); System.out.println(a + “, ” + b); } 为什么结果是1, 2?第二个method里对第一个method的call好像并没有被pass到2里? 谢谢了!
public void yourTest(int a, int b) { a++; b++; } public void myTest() { int a = 1; int b = 2; yourTest(b, a); System.out.println(a + “, ” + b); } 为什么结果是1, 2?第二个method里对第一个method的call好像并没有被pass到2里? 谢谢了! suiji 发表于 2021-07-02 09:13
public void myTest() { int a = 1; int b = 2; yourTest(b, a); System.out.println(a + “, ” + b); }
为什么结果是1, 2?第二个method里对第一个method的call好像并没有被pass到2里? 谢谢了!
a,b是primitive type,它们的value被传去第一function,不会改变自己的value。
如果学过C语言会更容易理解
public void myTest() { int a = 1; int b = 2; yourTest(b, a); System.out.println(a + “, ” + b); }
Pass by value
标准说法是,java只有pass by value! https://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value