Java中成员变量、局部变量、静态变量的区别,静态变量详解

1 成员变量、局部变量和静态变量

成员变量:在类中且在方法外定义的变量称为成员变量;

局部变量:方法中、方法的形参或代码块中定义的变量,都属于局部变量;

静态变量:如果一成员变量有static关键字修饰,则该变量被称为静态变量。

成员变量局部变量静态变量
定义位置类中,方法外方法中、方法的形参或代码块内类中,方法外
初始化值有默认初始化值无,先定义,赋值,最后使用有默认初始化值 (类初次加载时进行初始化)
调用方式对象调用对象调用,类名调用
存储位置方法区
生命周期与对象共存亡与方法共存亡与类共存亡
别名实例变量类变量

2 静态变量的特点及注意事项

1 特点

  1. 有static修饰符;
  2. 随着类的加载而加载,优先于对象存在;
  3. 可以直接被类名调用,即多了一种调用方式:类名.静态变量;
  4. 其内存空间对所有该类的实例是共享的,实现了数据共享。

2 注意事项

  1. 如果变量是对象特有的,不应当被静态修饰。因为那样的话,特有变量会变成对象的共享变量,这样对事物的描述就出了问题。因此,在定义静态时,必须要明确,该变量是否是被对象所共享的。
  2. 静态方法只能访问静态成员(包括静态方法、静态变量、静态代码块),不可以访问非静态成员。因为静态方法加载时,先于对象存在,所以没有办法访问对象中的成员。
  3. this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。

3 什么情况下使用静态变量

静态变量实现了内存共享,节省了内存开销,但由于其生命周期太长,不易被回收,使用不合理反而会造成内存浪费,因此建议在满足以下条件时使用。

  1. 变量所在对象体积较大,占用内存较多;
  2. 变量所在对象生命周期较长;
  3. 变量所在对象数据稳定;
  4. 该类的实例有对该变量的共享需求。

3 总结

  1. 如果一个变量能够用来描述一个类的属性,就定义为成员变量;
  2. 如果一个变量应被所有对象共享,就把这个变量用static来修饰,即为静态变量;
  3. 否则就定义为局部变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellosc01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值