{
b = 5 ;
a = b + 1 ;
}
非静态代码块,在没有创建对象时根本不会执行到。只有静态代码块在类加载时自动执行的。非静态代码块是在创建对象时自动执行的代码,不创建对象不执行该类的非静态代码块。且执行顺序为静态代码块------非静态代码块----构造函数。
写个例子- public class TestStaticCon {
- public static int a = 0;
- static {
- a = 10;
- System.out.println("父类的静态代码块在执行a=" + a);
- }
-
- {
- a = 8;
- System.out.println("父类的非静态代码块在执行a=" + a);
- }
- public TestStaticCon() {
- this("a在父类带参构造方法中的值:" + TestStaticCon.a); // 调用另外一个构造方法
- System.out.println(a);
- System.out.println("父类无参构造方法在执行a=" + a);
- }
- public TestStaticCon(String n) {
- System.out.println(n);
- System.out.println(a);
- }
- public static void main(String[] args) {
- TestStaticCon tsc = null;
- System.out.println("!!!!!!!!!!!!!!!!!!!!!");
- tsc = new TestStaticCon();
- }
- }
复制代码 运行结果
|
|