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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 章闽 中级黑马   /  2012-10-16 18:24  /  1417 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

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

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
静态块只会在加载的时候运行~~这里只加载了一次

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
静态代码块在类加载到内存的时候,就会运行,加载一次,他就运行一次。
你主函数里在调用的时候,StativInitDemo类只加载了一次
回复 使用道具 举报
邹海洋 来自手机 中级黑马 2012-10-18 00:01:01
板凳
StativInitDemo里的成员都是静态的,第一个3是在加载StativInitDem时打印的,打印完后i自增,后面两个4就是主函数的打印语句。废话这么多,知识点就是静态只加载一次。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马