静态代码块,普通代码块还有构造方法执行结果,都写注释了,方便以后查看
StaticBlock.java
public class StaticBlock {
int a=0;
static int b=0;
static {
//静态代码块不能对非静态属性引用,这里 a++ 报错
//因为没有new对象这个可以运行,但是类的成员属性跟随对象的,所以这里不能对非静态属性引用
//静态代码块new 此类对象,还有本类直接运行主方法都会运行
System.out.println("this is static block coding"+" b:"+ ++b );
}
{
//这里可以a++
//看运行结果应该是跟随构造方法的
System.out.println("this is active block coding"+" a:"+ ++a +" b:"+ b++);
}
public StaticBlock() {
//可以a++
//这个跟静态代码块不同只有new 本类对象才会运行
System.out.println("this is noParameter construct block"+" a"+ ++a +" b:"+ ++b);
}
public static void main(String[] args) {
System.out.println("main");
}
}
/*
* 输出结果:
*
* this is static block coding b:1
* main
*/
StaticBlockDemo.java
public class StaticBlockDemo {
public static void main(String[] args) {
StaticBlock s=new StaticBlock();
}
}
/*
* 输出结果:
*
* this is static block coding b:1
* this is active block coding a:1 b:1
* this is noParameter construct block a2 b:3
*
*
*/