public class Task {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Task2 t = new Task2();
t.task2();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Task2 t = new Task2();
t.task2();
}
}
public class Task2 {
public Task2(){
System.out.println("构造方法");
}
static{
System.out.println("静态快");
}
public void task2(){
System.out.println("方法里");
}
}
最后打印:静态快 构造方法 方法里
static{}(静态代码块)与{}(非静态代码块)的异同点
相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,
一般在代码块中对一些static变量进行赋值。
不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。
静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new
一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行