【发布时间】:2021-02-09 14:50:39
【问题描述】:
我是 Java 新手,我在 C++ 和 Python 方面有过不错的经验。现在,来自 C++,我有点怀念通过引用传递。我为我想采用的方法编写了代码:
package bs;
public class Main{
private int a = 1;
private int b = 11;
public void inc(int i){
if (i < 6){
inc_all(this.a);
}
else{
inc_all(this.b);
}
}
private void inc_all(int prop){
prop++;
}
public void display(){
System.out.println(a + " " + b);
}
public static void main(String[] args){
Main car = new Main();
int i = 1;
while( i < 11){
car.inc(i);
car.display();
i++;
}
}
}
现在,我可以编写两个不同的函数来递增 a、b,但我只想编写函数并根据场景传递属性(a 或 b)。在这种情况下,属性显然没有增加(感谢按值传递)。
如何在不创建 a 和 b 数组的情况下解决这个问题(我知道数组总是通过引用传递)?
【问题讨论】:
-
只要你把原始类型抛在脑后,你就会发现按值传递引用(就像 Java 所做的那样)实际上允许许多与传递引用相同的操作。换句话说:如果您通过值传递对对象的引用,您仍然可以操作该对象,并且调用者将看到该操作。 唯一 你不能做的就是改变调用者传入的变量/表达式的实际(参考)值。
标签: java pass-by-reference pass-by-value