如何初始化一个类中的静态成员变量?
如果我们不考虑父类,我们可以先进行静态初始化,然后进行非静态初始化。
静态初始化包括静态成员变量和静态块的初始化。实际上,静态块在编译期间是集中的。
非静态初始化包括非静态成员变量初始化、非静态块和构造方法,编译后集中在构造方法中。
如果没有相互通话,那就非常简单了。首先,静态初始化。如果在静态初始化过程中调用了后者呢?!你可以编写一个代码来测试它:
输出:
你可以先看到它确实是静态初始化,但是中间有对构造方法的调用。
虽然编译器不报告错误,但此调用实际上是有风险的。
由于静态成员变量(如果已设置)在初始化之前调用类构造函数(假设存在依赖关系),因此该过程实际上是不可控制的。
看看这个例子:你能想象这种输出吗?
因此,如果必须在静态初始化过程中调用此类的构造函数。
一定要注意初始化顺序,准确到语句。
的静态成员变量为什么一定要初始化?
我们知道c类的静态成员变量需要初始化,但是为什么要初始化它们呢。实际上,“静态成员变量需要初始化”这句话有一些问题。应该说“静态成员变量需要定义”是准确的,而不是初始化。两者的区别在于初始化是分配一个初始值,而定义是分配内存。静态成员变量只在类中声明,而没有定义,因此在类外定义它们实际上是为静态成员变量分配内存。
原文标题:java成员变量初始化 如何初始化一个类中的静态成员变量?,如若转载,请注明出处:https://www.saibowen.com/tougao/23090.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。