首页 /  技术专区  /  Java 宽屏模式 >

Java中静态(static)成员何时才会初始化

先谈static

static方法就是没有this的方法。在static方法的内部不能调用非静态方法,反过来倒是可以的,而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。它很像全局方法。Java中禁止使用全局方法,但你在类中置入static方法就可以访问其它static方法和static域 

—摘抄自《Java编程思想》第四版86页#5.4.2 static的含义


无论创建多少个对象,静态数据都只占用一份存储区域。static关键字不能应用于局部变量,因此它只能作用于域。如果一个域是静态的基本数据类型域,且也没有对它进行初始化,那么它就会获得基本类型的标准初值;如果它是一个对象引用,那么它的默认初始化的值就是null。 

—摘抄自《Java编程思想》第四版95页#5.7.2 静态数据的初始化


由上面我可以总结出几点:

1.static成员是所有类对象公共的

2.static成员可以直接用类名调用,无需创建对象

3.static方法中不能使用this关键字


那么还是不知道静态成员何时才会被初始化,虽然上面摘抄的第二段解释中说了静态数据的初始化,然而并没有说何时会进行初始化,那么倒底何时初始化?


在谈static成员何时初始化

遇到这种问题,我们可以反过来推,那么怎么推?根据什么推? 

相信大家都做过数学的求证题,那么这种题目都有一个特征,那么就是会提供至少一个或多个已知条件。好,那么我们来找找我们需要的已知条件 

条件:static成员可以直接用类名调用,无需创建对象 


从上面的条件中我们可以得知哪些信息了?

1.可以直接用类名调用

2.不需要创建任何对象就可以调用


我们在试想,当我们直接用类名去调用一个静态成员的时候,这个静态成员肯定必须要在我们调用之前就要被初始化好,那么也就是说在类被加载的时候就会被初始化好,因为在类被装载到jvm虚拟机后,如果不初始化static修饰的成员,那么就不能正确的使用类名去调用静态成员了{类(class)什么时候被加载?}


总结

一句话:类中的静态成员会随着类的加载而加载


————————————————

版权声明:本文为CSDN博主「WangEason1985」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/jisuanji198509/article/details/81260487



上一篇: JDBC事务
下一篇: Mybatis简介

头像
0/200
图片验证码