方法的内存原理
- 方法没被调用的时候,在方法区中的字节码文件中存放
- 方法被调用时,需要进入到栈内存中运行
例子:
在这个代码中有两个方法一个是main方法,一个是add方法。
首先,把这个文件编译为字节码文件,存放到方法区中
在调用main方法,把main方法存放到栈内存,在栈内存开辟一处空间,一直运行到main方法中的int sum = add(10,20);
main方法暂时不往下运行,调用add方法。
add方法被调用,把add方法存放到栈内存,在栈内存开辟一处空间,add方法里面会开辟两个变量的空间,分别是a和b,a里存放的是10,b存放的是20,在执行add方法中的int c = a+b; return c;c的值为30,通过return c,直接把30返回到main方法中的add(10,20)中,在赋值给sum。
add方法被调用完成之后,会把add方法从栈内存中清理掉,在运行main方法中的System.out.println(sum),输出sum的值为30
main方法也执行完了,在把main方法在栈内存中给清理掉。
栈的特点是,先进后出。