Java变量


在Java中,根据定义变量位置的不同,可以将变量分成两大类:成员变量和局部变量。

成员变量和局部变量

变量
成员变量
局部变量
实例变量 不用static修饰
类变量 也就是静态变量
形参
方法局部变量
代码块局部变量

类变量或者实例变量无需显式初始化,系统会进行默认初始化。而局部变量则需显式初始化,否则无法访问局部变量(就是不能直接使用,必须先初始化后再使用)。形参也无需显式初始化,因为在调用的时候系统会进行初始化。

成员变量的初始化和内存中的运行机制

第一次使用类时,系统会加载类,并且初始化这个类。会为类变量在堆内存中分配空间,并进行默认初始化。实际上第一次加载类的时候系统会在堆中为类分配空间,这个空间就包括了类变量的空间。而在创建对象的时候就会为实例变量分配存储空间,并且进行默认初始化,因此类变量和实例变量都不需要显示初始化即可访问。
那么java是怎么存储类的呢?上面已经说过,第一次加载类的时候会在堆中为类分配空间,这个空间包括了类变量的空间,当然还有其他的空间,我想可能就是方法的空间,而在创建对象之后,对象在使用方法的时候,再从这个空间获取方法并执行。因为在创建实例对象的时候并没有提到说为方法分配空间。暂且先理解到这个层面。

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

  • 局部变量定义之后,必须经过显式初始化之后才能使用,系统不会为局部变量执行初始化。意思就是系统不会为局部变量分配存储空间,直到程序给这个变量赋初始值的时候,系统才为局部变量分配内存。
  • 局部变量往往保存在栈内存当中,栈内存中的变量无需通过垃圾回收机制回收,其随着方法或者代码块的运行结束而结束。局部变量一般是基本类型的变量或者对象的引用,因此其所占内存一般很少。

变量的使用规则

类变量和实例变量是占用的堆内存,且其作用域分别在类存在范围和对象存在范围,相较于局部变量来讲,其生存时间更长,内存开销也会增大。因此能用局部变量的地方就不要用类变量或者实例变量了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值