黑马程序员技术交流社区

标题: java构造代码块和构造函数内的代码块有什么区别,谁先执行 [打印本页]

作者: fightingwang    时间: 2015-1-30 22:57
标题: java构造代码块和构造函数内的代码块有什么区别,谁先执行

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);
}
作者: llkk11000    时间: 2015-1-31 12:10
{ }静态代码块  跟随类走  类加载进内存缓冲即执行
先静态代码块赋值j  然后静态变量赋值j  但是没调用没打印  
然后new对象走构造代码快 统一赋值j 打印j

作者: 白衣布士    时间: 2015-1-31 14:25
静态代码块------然后构造代码块--------然后是构造函数




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