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

本文探讨了局部变量的初始化机制,强调必须显式初始化后使用。局部变量不在定义时分配内存,而是在赋值时才分配,并存储在栈内存中。它们的生命周期与所在方法或代码块相同,结束后自动释放,有利于提高程序性能。对比之下,成员变量存于堆内存,作用域更广,可能导致内存开销增加和程序内聚性的降低。建议尽量缩小局部变量作用域,若需跨方法共享或描述类状态,则应使用成员变量。
摘要由CSDN通过智能技术生成
局部变量的初始化和内存中的运行机制

 

1、局部变量定义后,必须经过显式初始化后才能使用,系统不会为局部变量执行初始化

这意味着定义局部变量后,系统并未为这个变量分配内存空间,
 

2、直到等到程序为这个变量赋初始值时,系统才会为局部变量分配内存并将初始值保存到这块内存
 

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

4、 如果局部变量是基本类型的变量,则直接把这个变量的值保存在该变量对应的内存中

如果局部变量是一个引用类型的变量 ,则这个变量里存放的是地址,通过该地址引用到该变量实际引用的对象或数组。
 

5、栈内存中的变量无须系统垃圾回收,往往随方法或代码块的运行结束而结束 因此,局部变量的作用域是从初始化该变量开始 , 直到该方法或该代码块运行完成而结束
 

6、因为局部变量只保存基本类型的值或者对象的引用, 此局部变量所占内存区通常比较小

 

7、而定义一个成员变量时,成员变量将被放置到堆内存中 成员变量的作用域将扩大到类存在范围或者对象存在范围

这种范围的扩大有两个弊端
 

1、增大了变量的生存时间,这将导致更大的内存开销

2、扩大了变量的作用域,这不利于提高程序 的内聚性

即使在程序中使用局部变量,也应该尽可能地缩小局部变量的作用范围

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值