static关键字、静态代码块

本文详细介绍了Java中static关键字的作用及应用场景,包括如何使用static来优化内存利用并实现数据共享,同时还探讨了static成员变量与非静态成员变量的区别,以及static方法的特性与限制。

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

static(静态)关键字的的出现主要是解决:资源浪费问题(内存浪费);实现共享;

static修饰的数据在内存中只维护一份。

被static修饰的数据在方法区中。

下图便于理解:


静态成员变量的特有访问方式:类名.属性名

而非静态的成员变量的访问方式:对象.属性名

使用static时要认真考虑,不能滥用。(只有数据需要共享时才能用static)


静态方法的访问方式:类名.方法名()  , 而非静态方法不可以这样访问,只能用对象调用方法。

非静态方法可以直接访问静态成员与非静态成员(成员包括:成员变量和成员方法)

1静态方法    不能直接访问       非静态成员(成员包括:成员变量和成员方法)

因为静态方法执行的早,这时非静态的成员还没有加载进内存中,故无法访问

2静态方法中不能出现  this和super 关键字

因为静态的方法是可以使用类名调用的,this关键字代表了一个函数的调用者对象,这时候可能还没有对象的存在。

3 静态的数据是在对应的类文件加载进内存的时候执行的(静态代码块亦是这样)

即使不创建对象,静态代码块的代码也会执行

4静态的数据是优先于对象的存在的。

构造代码块加上static修饰就变成静态代码块了()

static {

代码......

}


静态的成员变量与非静态的成员变量区别:
1. 作用上的区别:
1. 静态的成员变量 的数据是共享的数据,在内存中只有一份。
2. 非静态的成员变量是一个对象的属性,在每个对象中都维护了一份。
2. 存储的位置区别:
1.静态的成员变量是存储在方法区中的。
2. 非静态的成员变量是存储在堆内存中。
3. 生命周期区别:
1. 静态成员变量是随着类文件 的加载而存在,随着类文件的卸载而消失。

2. 非静态成员变量是随着对象 的创建而存在,随着对象的消失而消失的。


静态成员变量优缺点:
静态的优点:
1.节省内存。
2. 调用方便。
缺点:生命周期太长。


下图便于理解:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值