2023.10.29
1.不是局部变量在该方法被执行/调用时创建,而是应该为在该变量被声明并赋值时创建,可以理解为“当代码执行到该变量被赋值的代码时才被创建”。栈会为每个方法在运行的时候分配一块独立的栈帧内存区域,栈帧又包含“局部变量表”、“操作数栈”、“动态链接”以及“方法出口”四个部分。
Sec A: public class Demo { public void test() { int a; int b = 5; int c = b + 4; a = 2; } public static void main(String[] args) { Demo demo = new Demo(); demo.test(); } } Sec B: public class Demo { public void test() { int a; int b = 5; int c = b + 4; } public static void main(String[] args) { Demo demo = new Demo(); demo.test(); } }
A和B的代码看上去是一样的,都是在test方法的第一行声明了一个int a,A在最后会给a赋值,就会将对应的常量入栈,然后以istore_指令存给对应的局部变量,而在代码B中,就没有这个操作。
标签:java,int,创建,void,局部变量,Demo,test,public From: https://www.cnblogs.com/RynerLee/p/17796754.html