尝试从单独的方法增加局部变量但不起作用。关于激活的困惑 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
}
}
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
}
}