java基础知识-static关键字

本文详细介绍了Java中的static关键字,包括其修饰的静态变量、静态方法和静态代码块的特点及应用场景。探讨了static如何影响类成员的生命周期,并解释了为什么static方法不能调用非静态成员。

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

java中关键字static,一般用来修饰类内部成员,比如修饰成员变量我们称之为静态成员,修饰的成员方法我们称之为静态方法,他们属于类而不是类的实例

它们是随着类的加载(而不是随着对象的产生)而产生,以至于可以用类名+静态成员名(或静态方法名)直接获得。被static修饰的成员变量和成员方法是独立于该类的,它不依赖于某个特定的实例变量,也就是说它被该类的所有实例共享。所有实例的引用都指向同一个地方,任何一个实例对其的修改都会导致其他实例的变化。

static修饰的静态变量和静态方法和静态代码块介绍

ClassName.propertyName
ClassName.methodName(……)

static修饰的代码块表示静态代码块,当JVM装载类的时候,就会执行这块代码。

1static变量

static修饰的变量我们称之为静态变量,没有用static修饰的变量称之为实例变量,他们两者的区别是:
 静态变量是随着类加载时被完成初始化的,它在内存中仅有一个,且JVM也只会为它分配一次内存,同时类所有的实例都共享静态变量,可以直接通过类名来访问它。

 但是实例变量则不同,它是伴随着实例的,每创建一个实例就会产生一个实例变量。
 所以我们一般在这两种情况下使用静态变量:对象之间共享数据、访问方便。

2static方法
static修饰的方法我们称之为静态方法,我们通过类名对其进行直接调用。由于在类加载的时候就存在了,它不依赖于任何实例,所以static方法必须实现,也就是说他不能是抽象方法abstract。
 static方法是类中的一种特殊方法,我们只有在真正需要他们的时候才会将方法声明为static。如Math类的所有方法都是静态static的。

3static代码块
被static修饰的代码块,我们称之为静态代码块,静态代码块会随着类的加载一块执行,而且他可以随意放,可以存在于该了的任何地方。


static的局限:

由于static修饰的方法属于整个类,static方法内只能调用static变量和其他static方法,不能使用this,super等关键字。

static变量在定义时必须要进行初始化,且初始化时间要早于非静态变量。

静态方法效率上比实例方法效率高,静态方法的缺点是不自动进行销毁,而实例方法可以自动销毁。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值