5.3.3 局部变量的初始化和内存中的运行机制

5.3.3 局部变量的初始化和内存中的运行机制

局部变量不会默认初始化

局部变量定义后,必须经过显式初始化后才能使用,系统不会为局部变量执行初始化。这意味着定义局部变量后,系统并未为这个变量分配内存空间,直到等到程序为这个变量赋初始值时,系统才会为局部变量分配内存,并将初始值保存到这块内存中

局部变量保存在方法栈内存中

与成员变量不同,局部变量不属于任何类或实例,因此局部变量总是保存在其所在方法的栈内存中

  • 如果局部变量是基本类型的变量,则直接把这个变量的值保存在该变量对应的内存中;
  • 如果局部变量是一个引用类型的变量,则这个变量里存放的是地址,通过该地址引用到该变量实际引用的对象或数组。

局部变量无须垃圾会后

栈内存中的变量无须系统垃圾回收,往往随方法或代码块的运行结束而结束。

局部变量的作用域

因此,局部变量的作用域是从初始化该变量开始,直到该方法或该代码块运行完成而结束。因为局部变量只保存基本类型的值或者对象的引用,因此局部变量所占的内存区通常比较小。