执行顺序:
1)当没有new对象(有普通方法)时:
构造代码块和构造方法均不会执行,此时有:静态代码块>main方法>普通代码块
public class Demo4 {
{
System.out.println("构造代码块");
}
public Demo4(){
System.out.println("构造方法");
}
public static void a(){
System.out.println("普通代码块");
}
static {
System.out.println("静态代码块");
}
public static void main(String[] args) {
System.out.println("main方法执行");
System.out.println("-------------------------");
a();
}
}
结果:
静态代码块
main方法执行
-------------------------
普通代码块
2)当new对象之后时:静态代码块>main方法>构造代码块>构造方法>普通代码块
public class Demo4 {
{
System.out.println("构造代码块");
}
public Demo4(){
System.out.println("构造方法");
}
public void a(){
System.out.println("普通代码块");
}
static {
System.out.println("静态代码块");
}
public static void main(String[] args) {
System.out.println("main方法执行");
System.out.println("-------------------------");
new Demo4().a();
}
}
结果:
静态代码块
main方法执行
-------------------------
构造代码块
构造方法
普通代码块
方法之间的访问:普通方法可以访问静态方法和普通方法,静态方法可以访问静态方法,如果想访问普通方法必须new对象在访问。