方法执行内存分析
代码如下:
public class MethodTest01 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int retValue = sumInt(a, b);
System.out.println("retValue = " + retValue);
}
public static int sumInt(int i, int j) {
int result = i + j;
int num = 3;
int retValue = divide(result, num);
return retValue;
}
public static int divide(int x, int y) {
int z = x / y;
return z;
}
}
运行结果如图
那么到底是如何得出这样的结果的呢?
1.首先程序执行到main方法。在main方法中定义变量a,b并为其开辟空间,a赋值为10,赋值为20。
2.int retValue = sumInt(a, b);调用sumInt()方法,a,b的值传给i,j。
3.继续运行,i+j赋值给 result,此时result值为30,num=3。
4.int retValue = divide(result, num);调用divide()方法,并将result,num的值传递给x,y,此时x=30,y=3,return z=10。
5.当divide()方法执行完后,sumInt()中调用的divide()方法也执行完毕,程序继续执行,于是可以知道retValue,return retValue= 10。之后继续回到main方法中,执行打印retValue。
结合下图理解
从上至下执行完毕后继续往回调用
注意:
程序一旦调用方法,就会给方法分配内存空间
方法调用时,参数在传递时传的变量中保存的 值
调用方法时必须等待等号右边执行完毕才会将结果传给等号左边,才能继续执行