美文网首页
面试准备3:Java中静态(static)成员何时才会初始化

面试准备3:Java中静态(static)成员何时才会初始化

作者: shaYanL | 来源:发表于2018-07-30 10:01 被阅读0次

静态成员有哪些?static修饰的成员变量即:类变量

静态成员的初始化的阶段,根据有没有显示初始化而异,根据是否被final修饰而异:

private static int num = 11;
private static int num2;
private static final int num3 = 12

类加载的准备阶段会给所有static 成员在方法区中分配内存,并设置变量初始值【这个初始值就是零值,零值根据类型不同而异】,所以可以理解为num2就是默认初始化为了0,因为它没有显示初始化,之后不会再初始化num2的值了;
这时【即准备阶段】num值也为0,在类加载的初始化阶段num才会执行类变量赋值的操作,即在初始化阶段num值为11;
但在类加载的准备阶段num3的值就会被赋值为12而不是0,这是因为num3被final修饰,此时“类字段的字段属性表中就存在ConstantValue属性,而准备阶段变量num3就会被初始化为ConstantValue属性所指定的值”--来自《深入理解Java虚拟机》第二版

总结

所有静态成员在类加载完成之后都已经或显示或隐式的完成了初始化赋值的操作。

下面是各个类型的零值

零值:
int 0
long 0L
short (short) 0
char '\u0000'
byte (byte) 0
boolean false
float 0.0f
double 0.0d
引用类型 null

关于static的一些使用分析见 谈static

相关文章

  • 面试准备3:Java中静态(static)成员何时才会初始化

    静态成员有哪些?static修饰的成员变量即:类变量 静态成员的初始化的阶段,根据有没有显示初始化而异,根据是否被...

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

    先谈static static方法就是没有this的方法。在static方法的内部不能调用非静态方法,反过来倒是可...

  • Java类中各个成员初始化顺序

    Java中各个成员初始化顺序 静态属性:static开头定义的属性 静态方法块:static{}包起来的代码块 m...

  • java学习4/11

    局部变量和成员变量的区别 Java中的static使用 Java中的静态内部类 Java中继承的初始化顺序 Jav...

  • java语言static

    Java中的静态方法static 1、static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可...

  • java面试问题总结与分享,很乱

    java中static关键字的作用 在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员...

  • Java_basic_3: static, this 关键字

    static static 静态变量 Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所...

  • C#学习笔记<五> static

    1 静态成员 static成员中不能调用非static成员非static成员中可以调用static成员静态成员类似...

  • C++静态成员与友元

    静态成员 静态变量的初始化(如何定义) static int getnum()//静态成员函数 静态成员函数只能操...

  • java初始化顺序

    存在继承关系时 父类static块和静态成员变量,按顺序初始化 子类static块和静态成员变量,按顺序初始化 父...

网友评论

      本文标题:面试准备3:Java中静态(static)成员何时才会初始化

      本文链接:https://www.haomeiwen.com/subject/oeuxvftx.html