`
spacefly
  • 浏览: 277961 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

类中变量的初始化

    博客分类:
  • java
阅读更多

这位老兄 对类的初始化讲的太好了,  http://zangweiren.iteye.com/blog/208122

 

下面引用他的结论:

1)单个类内进行初始化时顺序

  1. 静态变量 & 静态初始化块
  2. 变量 & 初始化块
  3. 构造器

2)继承中类初始化时顺序

  1. 父类--静态变量 & 父类--静态初始化块
  2. 子类--静态变量 & 子类--静态初始化块
  3. 父类--变量 & 父类--初始化块
  4. 父类--构造器
  5. 子类--变量 & 子类--初始化块
  6. 子类--构造器

3)静态变量 vs 静态初始化块

静态变量和静态初始化块的优先级是相同的,依照他们在类中的定义顺序决定初始化的顺序,即谁先定义就先初始化谁。

 

4)变量 vs 初始化快

遵循和 3) 中同样的规则,即它们是相同优先级的,定义顺序决定初始化顺序,先定义的先初始化。

 

补充说明:

静态初始化块 是前面加了 static 关键字的 花括号,如 static {...}

初始化块 是花括号,如 {...}

分享到:
评论

相关推荐

    C++全局变量初始化的一点总结

    C++中的全局变量初始化是一个重要的话题,涉及到程序的正确性和可预测性。全局变量,即具有静态存储期的变量,其生命周期始于程序开始,终于程序结束。本文将深入探讨全局变量初始化的时机、方式以及一些处理特殊...

    详解C++中变量的初始化规则

    函数体外定义的变量初始成0;函数体内定义的变量不进行自动初始化。除了用作赋值操作的左操作数,其他任何使用未初始化变量的行为都是未定义的,不要依赖未定义行为。 以int类型为例,一段简单的测试代码: #...

    Java变量初始化

    这里类变量初始化的时机为两处,而没有在构造器中这一说。这也很容易理解,因为类变量是类加载的时候执行的初始化,且只执行一次,而调用构造器是对象实例化执行的,每实例化一次对象,执行一次。 总结 Java 变量...

    全局变量初始化导致的dll加载失败工程

    标题中的“全局变量初始化导致的dll加载失败工程”是一个典型的C++编程问题,涉及到动态链接库(DLL)的加载机制以及全局变量的初始化顺序。在C++编程中,全局变量的初始化顺序是一个需要深入理解的概念,尤其是在...

    java类变量初始化顺序

    详细讲解java类中静态变量,普通标量,对象、基本类型的初始化顺序。

    易语言静态变量初始化

    总的来说,易语言中的静态变量初始化是程序设计中的一个重要概念,尤其是在需要保存函数间状态或者实现某种计数功能时。理解并恰当使用静态变量,可以极大地提高代码的效率和可读性。在实际编程过程中,应根据需求...

    探究java的ClassLoader及类变量初始化顺序

    同时,掌握类变量初始化顺序可以避免因误解而导致的错误,特别是在多线程环境中,对静态变量的并发访问和初始化顺序的控制需要特别注意。 总之,深入理解Java的ClassLoader机制和类变量初始化顺序是提升Java编程...

    VC++全局变量初始化-16.09.26

    ### VC++全局变量初始化详解 #### 一、程序启动与全局变量初始化 在VC++环境中,当一个程序启动时,其加载过程与全局变量的初始化紧密相关。在本篇文章中,我们将详细介绍VC++中全局变量的初始化过程,尤其是动态...

    解决C++全局变量只能初始化不能赋值的问题

    C++中,全局变量只能声明、初始化,而不能赋值 也就是说,下面这样是不被允许的: #include using namespace std; int a; a = 2; int main() { return 0; } 错误提示是: C++ requires a type specifier for all...

    MDK下怎样才能让变量在复位时不被初始化

    在MDK(Keil)开发环境下,为了在单片机,如STM32,复位时保持变量的值不变,我们需要解决一个关键问题,即如何防止变量在复位时被自动初始化。通常,MDK会将全局变量和静态变量默认初始化为零。然而,根据项目需求...

    Java类加载器:静态变量初始化.docx

    在本文中,我们讨论了 Java 类加载器中的静态变量初始化机制,了解了静态变量的初始化顺序和类加载器的生命周期。通过对静态变量初始化机制的理解,我们可以更好地掌握 Java 语言的基础知识,并更好地应用 Java 语言...

    c++能不能给类的成员变量在声明的时候初始化? - life_limbo - 博客园1

    在C++编程语言中,确实可以为类的成员变量在声明时进行初始化,尤其是在C++11标准及其后续版本中,这一特性得到了正式支持。在早期的C++标准中,虽然也有类似的初始化方法,但其行为可能不尽相同,C++11及以后的标准...

    Qt变量初始化,为何要与声明的次序保持一致?-CSDN论坛1

    在编程语言中,特别是在C++和Qt框架下,变量初始化的顺序确实是一个重要的概念,它与成员变量在类中的声明顺序密切相关。这个问题涉及到C++的构造函数和成员初始化列表。 在C++中,当创建一个类的对象时,构造函数...

    易语言静态变量初始化源码.zip

    在这个“易语言静态变量初始化源码.zip”压缩包中,我们可以预见到它包含了一个或多个示例程序,这些程序主要展示了如何在易语言中使用静态变量进行初始化。 在编程中,变量是存储数据的容器,而静态变量有别于普通...

    类继承的初始化顺序类,继承的初始化顺序

    4. **子类非静态成员初始化**:接着是子类的非静态成员变量初始化。 5. **基类构造函数调用**:通过`super()`调用基类的构造函数。 6. **子类构造函数调用**:最后执行子类自身的构造函数。 ### 初始化过程详解 ##...

    Keil MDK下如何设置非零初始化变量

    一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备。...如何设置非初始化数据变量不被零初始化,这是本篇文章所要探讨的。

    TIA博途学习 | 优化的DB块中添加变量时不想初始化DB块怎么做?.docx

    在使用西门子TIA博途( Totally Integrated Automation Portal)编程软件进行自动化系统开发时,有时我们可能需要在已有的优化DB(数据块)中添加新的变量,但又不希望初始化整个DB块,以免丢失已存储的重要数据。...

    易语言源码易语言静态变量初始化源码.rar

    易语言源码易语言静态变量初始化源码.rar 易语言源码易语言静态变量初始化源码.rar 易语言源码易语言静态变量初始化源码.rar 易语言源码易语言静态变量初始化源码.rar 易语言源码易语言静态变量初始化源码.rar ...

    java中类的初始化顺序

    // 实例成员变量初始化 public static TestB b = new TestB(); public static void main(String[] args) { new TestOrder(); } } class TestA { public TestA() { System.out.println("Test--A"); } } ...

Global site tag (gtag.js) - Google Analytics