尝试从单独的方法增加局部变量但不起作用。关于激活的困惑 Stack/Record

Trying to increment local variable from a separate method but not working. Confusion about Activation Stack/Record

public class Demo {
    public static void main(String[] args){
        Demo instance = new Demo();
        instance.init();
    }
    public void init() {
        int size = 0;
        inc(size);
        System.out.println(size);
    }
    public int inc(int size){
        size++;
        return size;
    }
}

当我调用上面的代码时,返回数字零。

即使将 size 声明为 class 属性而不是局部变量也不能解决问题。我知道当一个方法完成时,相应的记录(包含局部变量等)会从激活堆栈中弹出。但是,如果 size 变量在 init() 方法中声明,然后在单独的方法 (inc()) 中递增并 返回 ,不应该t 大小等于 1?

递增时,您不会将值赋给任何东西,它会递增它,但不会将它存储在任何地方,因此该值保持为 0,请尝试这样做。

public class Demo 
{
    public static void main(String[] args)
    {
        Demo instance = new Demo();
        instance.init();
    }
    public void init() 
    {
        int size = 0;
        size = inc(size);
        System.out.println(size);
    }
    public int inc(int size)
    {
        size++;
        return size;
    }
}

或者像这样

public class Demo 
{
    public static void main(String[] args)
    {
        Demo instance = new Demo();
        instance.init();
    }
    public void init() 
    {
        int size = 0;
        System.out.println(inc(size));
    }
    public int inc(int size)
    {
        size++;
        return size;
    }
}
size = inc(size);

将解决您的问题,因为您没有使用 public 作用域变量。

如果你想让它更优雅一点(至少我认为这样会更方便一点),那么你需要将变量声明为 class 变量。 我将向您说明这一点:

public class Demo {    
  int size; //global range variable

  public static void main(String[] args){
    Demo instance = new Demo();
    instance.init();
  }

  public void init() {
    this.size = 0;
    inc();
    System.out.println(this.size);
 }

 public void inc(){
   this.size++; //will increment your variable evertime you call it
 }
}