A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lucky_xingxing 黑马帝   /  2012-3-10 16:54  /  2556 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我自己感觉应该是 就一种, 因为静态变量属于类变量,它在类编译成字节码的时候就被初始化了,和类一起被加载了。各位发表下观点吧。不知道我的理解是否正确

该贴已经同步到 lucky_xingxing的微博

3 个回复

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

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
静态变量初始化可在构造方法中初始化,可在普通方法中初始化,也可作为成员变量进行初始化。静态变量在内存在只有一份,共享式。
初始化顺序:先初始化父类的静态代码--->初始化子类的静态代码-->(创建实例时,如果不创建实例,则后面的不执行)初始化父类的非静态代码(变量定义等)--->初始化父类构造函数--->初始化子类非静态代码(变量定义等)--->初始化子类构造函数。

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
贴主人说是static的初始化方式
除了你说的这种常见的方式之外还有一种显式的初始化方式
java允许将多个静态初始化动作组织成一个特殊的“静态子句”,也叫做静态块。就像下面的程序:
public class Spoon{
static int i;
static{
i = 47;
}
}
这也是一种初始化方式,尽管看起来像是个方法,其实只是一段跟在static关键字后面的代码。

这是《java编程思想》P97页上面的,见房主提出问题,特来凑个热闹

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马