局部变量的初始化和内存中的运行机制
1、局部变量定义后,必须经过显式初始化后才能使用,系统不会为局部变量执行初始化
这意味着定义局部变量后,系统并未为这个变量分配内存空间,
2、直到等到程序为这个变量赋初始值时,系统才会为局部变量分配内存并将初始值保存到这块内存中
3、与成员变量不同 局部变量不属于任何类或实例 因此它总是保存在其所在方法的栈内存中
4、 如果局部变量是基本类型的变量,则直接把这个变量的值保存在该变量对应的内存中
如果局部变量是一个引用类型的变量 ,则这个变量里存放的是地址,通过该地址引用到该变量实际引用的对象或数组。
5、栈内存中的变量无须系统垃圾回收,往往随方法或代码块的运行结束而结束 因此,局部变量的作用域是从初始化该变量开始 , 直到该方法或该代码块运行完成而结束
6、因为局部变量只保存基本类型的值或者对象的引用, 此局部变量所占内存区通常比较小
7、而定义一个成员变量时,成员变量将被放置到堆内存中 成员变量的作用域将扩大到类存在范围或者对象存在范围
这种范围的扩大有两个弊端
1、增大了变量的生存时间,这将导致更大的内存开销
2、扩大了变量的作用域,这不利于提高程序 的内聚性
即使在程序中使用局部变量,也应该尽可能地缩小局部变量的作用范围