通过引用/值传递 - 简单的例子

Mic*_*ick 7 java

我知道这个问题已经解决了很多次 - 但我的Java/C++知识太弱了我几乎无法理解答案:-( ...我真正喜欢的只是一个非常简单的例子.

在C++中,我可以编写以下内容:

void func()
{
  int x = 3;
  add_one(x);
  // now x is 4.
}
void add_one(int &var)
{
  var++;
}
Run Code Online (Sandbox Code Playgroud)

我现在想看到的是用java实现相同效果的最简单方法.

hvg*_*des 9

你不能直接.您可以获得的最接近的是将值放在一个对象中,并将引用(按值,因此引用被复制)传递给方法.

void func()
{
  int x = 3;
  int[] holder = [x];
  add_one(holder);
  // now holder[0] is 4.  x is still 3.
}

// container here is a copy of the reference holder in the calling scope.
// both container and holder point to the same underlying array object
void add_one(int[] container)
{
    container[0]++;
}
Run Code Online (Sandbox Code Playgroud)

这里我使用数组,但包装器可以是任何对象.

  • 整数对象是不可变的,所以没有. (4认同)
  • 是不是可以使用java的拳击和拆箱?Aka,使用原语的Object版本?我认为_that在技术上会更接近C++中的参考示例,尽管它会产生其他副作用. (2认同)