有姐妹帮我解释一个简单的java问题吗?

s
suiji
楼主 (北美华人网)
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里? 谢谢了!
Q
QLXF
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

a,b是primitive type,它们的value被传去第一function,不会改变自己的value。

m
minqidev
函数里面的,是一个临时变量。 函数只是传了变量的值,没有把变量的地址发过去。
如果学过C语言会更容易理解
大内密探008
等价于: public void yourTest(int x, int y) { x++; y++; }
public void myTest() { int a = 1; int b = 2; yourTest(b, a); System.out.println(a + “, ” + b); }
金银岛
读一下pass by value和pass by reference的区别
s
suiji
谢谢,比老师讲得清楚。
y
yzyao
回复 1楼suiji的帖子
Pass by value
g
gokgs
把 int 改成 Integer 试一试看看。
b
blackmiles88
读一下pass by value和pass by reference的区别
金银岛 发表于 2021-07-02 09:23

标准说法是,java只有pass by value! https://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value