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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


public class InitDemo{
InitDemo(){
j=1000;
System.out.println("j="+j);
}
int i;
static int j=50;
{
i=5;
j=10;      
System.out.println("i="+i);
System.out.println("j="+j);
}

public static void main(String[ ] args){
InitDemo aa=new InitDemo();
}
}
有一些不明白地方   先输出i=5   j=10  后输j=1000
为什么先执行
{ i=5;
  j=10;   
  System.out.println("i="+i);
  System.out.println("j="+j); } //这部分是什么代码块?
然后在执行构造函数呢
InitDemo(){        //new完对象后,不应该先执行构造函数吗?
  j=1000;
  System.out.println("j="+j);
}

2 个回复

倒序浏览
{ }静态代码块  跟随类走  类加载进内存缓冲即执行
先静态代码块赋值j  然后静态变量赋值j  但是没调用没打印  
然后new对象走构造代码快 统一赋值j 打印j
回复 使用道具 举报
静态代码块------然后构造代码块--------然后是构造函数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马