黑马程序员技术交流社区

标题: 关于静态初始化和代码加载 [打印本页]

作者: 章闽    时间: 2012-10-16 18:24
标题: 关于静态初始化和代码加载
public class five_three {
public static void main(String[] args) {
  System.out.println("maincode i="+StativInitDemo.i);
  System.out.println("maincode i="+StativInitDemo.i);
}
}
class StativInitDemo{
static int i;
static{
  i=3;
  System.out.println("Static code i= "+i++);
}
}
为什么结果是
Static code i= 3
maincode i=4
maincode i=4

而不是
Static code i= 3
maincode i=4
Static code i= 3
maincode i=4

静态语句块不是在类加载是运行的吗?

作者: 黄小贝    时间: 2012-10-16 18:27
静态块只会在加载的时候运行~~这里只加载了一次
作者: 马良    时间: 2012-10-17 23:41
静态代码块在类加载到内存的时候,就会运行,加载一次,他就运行一次。
你主函数里在调用的时候,StativInitDemo类只加载了一次
作者: 邹海洋    时间: 2012-10-18 00:01
StativInitDemo里的成员都是静态的,第一个3是在加载StativInitDem时打印的,打印完后i自增,后面两个4就是主函数的打印语句。废话这么多,知识点就是静态只加载一次。




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