static关键字详解

static用来修饰成员变量 和 成员方法

static修饰成员变量的作用:

1、被称为静态的成员变量

2、所有该类的对象共享该变量,无论创建多少个对象 该变量在内存中只有一份。

3、静态成员的生命周期不依赖于对象,而是依赖于类

4、在类加载的时候分配内存空间

5、静态的成员变量不建议使用对象去访问 而是使用类名来访问

6、静态的成员变量在方法区中分配内存。


一般情况下 终态变量 用static修饰  因为终态的值只能被读取 不能被修改,在内存中只有一份就行


类加载:

Person person = new Person();

先看Person是否被加载过,没有加载,那么立即加载Person。将Person类的字节码信息加载到方法区中。

加载一共分为三步(装载、链接、初始化)在加载的最后一步 为静态的成员变量赋初值初始化。加载完毕后,才能创建相应的对象。如果Person的字节码已经被加载了 就直接创建对象


类只加载一次 static成员也只进行空间分配一次。


static修饰方法的作用:

1、不依赖于任何对象,直接通过类名来调用。用来写工具方法。

静态的成员方法比普通的成员方法效率要快一些。

注意:在类中定义方法,能使用局部变量尽量使用局部变量。比成员变量的效率高。

2、static修饰的方法 可以用来访问类的静态的其他的成员


思考:

1、为什么静态方法不可以访问类的实例变量?

实例变量从属于对象,静态方法从属于类,静态方法在没有创建对象的时候就可以被调用,这个时候实例变量还没有分配空间。

2、静态方法中为什么不能有this?

this指向一个对象的引用,而静态方法被调用时 对象可能还没被创建 没分配空间。所以不可以。

3、类的实例方法中是否可以访问静态成员?

可以,实例方法属于对象,调用实例方法时 对象已经被建立  说明类早已经被加载了,所以静态成员早已经初始化分配了空间,访问是安全的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值