Java static关键字的使用

今天在写代码的时候突然想到了static 方法的使用和new对象调用方法的使用的区别,于是就研究了一下java中static关键字的用法。

java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量;另一种是实例变量,通常有new 关键字初始化。

        在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

        在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

        一个类无论创建了多少个实例对象,在内存中永远只分配了类中的一个静态变量

public class StaticMethod {
    public static int staticVar=0;
    public int instanceVar=0;
    public void VarintTest(){
        staticVar++;
        instanceVar++;
        System.out.println("staticVar="+staticVar+"instanceVar="+instanceVar);
    }
}
在上面的代码中,每创建一个对象,staticVar中的值就会+1。而每创建一个对象,其中instanceVar的实例就会增加一个。

static变量的生命周期取决于类的生命周期。

类初始化顺序:


1)静态变量、静态代码块初始化
2)构造函数
3)自定义构造函数
结论:想要用static存一个变量,使得下次程序运行时还能使用上次的值是不可行的。因为静态变量生命周期虽然长(就是类的生命周期),但是当程序执行完,也就是该类的所有对象都已经被回收,或者加载类的ClassLoader已经被回收,那么该类就会从jvm的方法区卸载,即生命期终止。


更进一步来说,static变量终究是存在jvm的内存中的,jvm下次重新运行时,肯定会清空里边上次运行的内容,包括方法区、常量区的内容。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值