Java开发之道
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

细节18 呼之即来——内存中局部变量的运行机制

局部变量是指方法的形参变量以及在方法体内定义的变量或在某个代码块中定义的变量,系统不会自动为局部变量执行初始化操作,局部变量必须在使用方法或代码块时,为其指定初始值,一旦为局部变量指定了初始值,就可以使用该局部变量了。

注意

局部变量是属于某个方法或某个代码块的,局部变量被保存在其所在方法或代码块的栈内存中,并随着方法或代码块的开始而开始,随着方法或代码块的结束而结束,不需要通过JVM的垃圾回收器回收。

由于局部变量是存储在栈内存中,系统不能自动为其指定初始值,所以必须在使用时显式地为其指定初始值,并且局部变量在方法调用结束或代码块执行结束后,会被自动释放。

示例:

    public static void main (String[] args) {
      int sum = 0;
      for (int i = 0; i<=10; i++){
          sum = sum + i;
      }
      System. out. println (sum);
    }

运行本示例,程序执行主方法,首先为局部变量sum赋初始值0,然后执行循环体进行累加求和,并将求和结果赋值给变量sum,循环结束后sum的值为55,如图5.15所示,是局部变量sum在内存中的分布情况,其间省略了执行循环体为sum赋值的中间过程,并且在主方法结束后,自动释放sum所占用的内存空间。

图5.15 局部变量sum的内存分布

说明

当本示例的主方法执行结束后,系统会自动释放局部变量sum 所占用的内存空间,这个过程是不需要JVM的垃圾回器进行回收的。