黑马程序员技术交流社区

标题: 静态变量有几种初始化方式? [打印本页]

作者: lucky_xingxing    时间: 2012-3-10 16:54
标题: 静态变量有几种初始化方式?
我自己感觉应该是 就一种, 因为静态变量属于类变量,它在类编译成字节码的时候就被初始化了,和类一起被加载了。各位发表下观点吧。不知道我的理解是否正确

该贴已经同步到 lucky_xingxing的微博
作者: 赵英坤    时间: 2012-3-10 17:05
贴主人说是static的初始化方式
除了你说的这种常见的方式之外还有一种显式的初始化方式
java允许将多个静态初始化动作组织成一个特殊的“静态子句”,也叫做静态块。就像下面的程序:
public class Spoon{
static int i;
static{
i = 47;
}
}
这也是一种初始化方式,尽管看起来像是个方法,其实只是一段跟在static关键字后面的代码。

这是《java编程思想》P97页上面的,见房主提出问题,特来凑个热闹
作者: 黄奇耀    时间: 2012-3-10 17:15
静态变量初始化可在构造方法中初始化,可在普通方法中初始化,也可作为成员变量进行初始化。静态变量在内存在只有一份,共享式。
初始化顺序:先初始化父类的静态代码--->初始化子类的静态代码-->(创建实例时,如果不创建实例,则后面的不执行)初始化父类的非静态代码(变量定义等)--->初始化父类构造函数--->初始化子类非静态代码(变量定义等)--->初始化子类构造函数。


作者: 许圣建    时间: 2012-3-10 17:24
大家都在看TIJ了啊,静态随着类的加载而加载,其实就是这样一句话,
我们关心的应该是类到底什么时候加载?
首先,类不是一次性全部加载的,用到哪个加载哪个
其次,创建类的对象和访问类的成员变量和成员函数时都会加载类,显然main所在的类首先加载,因为要加载静态main。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2