java静态局部变量_java中成员变量,局部变量,静态变量的辨析

本文详细介绍了Java中成员变量、局部变量和静态变量的区别及应用场景。成员变量是类的属性,静态变量允许类共享数据,而局部变量仅在特定作用域有效。静态变量随着类的加载而加载,可以直接通过类名访问,但不能访问非静态成员。使用静态变量需谨慎,考虑数据是否需要共享,生命周期及稳定性。合理使用静态变量能节省内存,但过度使用可能导致内存浪费。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自百度:https://baijiahao.baidu.com/s?id=1625360816541592483&wfr=spider&for=pc

1.java中成员变量,局部变量,静态变量的辨析

Java中的变量大致分为 成员变量 和 局部变量 两大类。

成员变量:在类体里面定义的变量称为成员变量;

如果该成员变量有 static 关键字修饰,则该成员变量称为静态变量或类变量;

如果该成员变量没有 static 关键字修饰,则该成员变量被称为非静态变量或实例变量。

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

下表是三者的区别:(下面这张图很经典好好理解)注:不要的把成员变量和静态变量混淆在一起,两者区别还是很大的

f7b65cb5f1d457656bb305cf6ea4df74.png

2.三者的根本区别在于:所在存储位置的不同决定了不同的特性。

下面主要介绍一下静态变量的利弊:

特点:

1、想要实现对象中的共性数据的对象共享。可以将这个数据进行静态修饰。

2、被静态修饰的成员,可以直接被类名所调用。也就是说,静态的成员多了一种调用方式。类名.静态方式。

3、静态随着类的加载而加载。而且优先于对象存在。

弊端:

1、有些数据是对象特有的数据,是不可以被静态修饰的。因为那样的话,特有数据会变成对象的共享数据。这样对事物的描述就出了问题。所以,在定义静态时,必须要明确,这个数据是否是被对象所共享的。

2、静态方法只能访问静态成员,不可以访问非静态成员。因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。

3、静态方法中不能使用this,super关键字。因为this代表对象,而静态在时,有可能没有对象,所以this无法使用。

什么时候使用静态变量?

在程序运行期间,类中的静态变量其内存空间对所有该类的实例是共享的,因此在某些时候,为了节省内存空间开销,共享资源,我们可以将类中的变量声明为静态变量。但是因为静态变量生命周期太长,并且不易被系统回收,所有如果使用不合理,就会适得其反,从而造成大量内存的浪费。因此建议在全部符合下列条件的情况下才使用静态变量:

(1)变量所包含的对象体积较大,占用内存较多

(2)变量所包含的对象生命周期较长

(3)变量所包含的对象数据稳定

(4)该类的实例有对该变量包含对象的共享需求

总结:

尽管三者的本质都是变量,可是使用时却有相当大的区别,稍不留神就可能陷入陷阱。且先记住:在一个类中,如果一个变量能够用来描述一个类的属性,那就定义为成员变量,否则,它就应该定义为局部变量。而如果一个变量在全局中都能使用(某个内容是被所有对象所共享),那么我们就可以把这个变量用static来修饰,即为静态变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值