Java学习——面向对象(代码块的概述、分类、执行顺序)
概念:在java中用{}括起来的代码被称为代码块
分类:1.局部代码块:在方法中,随着方法的调用而产生,随着方法释放而消失
2.构造代码块:在类中的方法外,每次调用都会执行,在构造方法前执行
3.静态代码块:用static修饰的代码块,在类中的方法外,在类加载时执行,只执行一次
4.同步代码块(多线程讲解,现不做讲解)
下面我们来看一下一个面试题,来深入了解代码块的执行顺序
看程序写结果
class Student {
//Student类加载,static代码块执行,且执行一次,所以执行顺序为3
static {
System.out.println("Student 静态代码块"); //3
}
//构造代码块在Student被new时执行,所以执行顺序为4;在第二次被new时再次执行,所以为6
{
System.out.println("Student 构造代码块"); //4 6
}
public Student() {
//Student第一次被new时,执行完静态代码块和构造代码块时,紧接着执行构造方法,所以顺序为5;第二次被new时再执行一次,所以顺序为7
System.out.println("Student 构造方法"); //5 7
}
}
class StudentDemo {
//当主方法的类加载时,static代码块会执行,且执行一次,所以执行顺序为1
static {
System.out.println("StudentDemo的静态代码块");//1
}
public static void main(String[] args) {
//主方法加载进栈,打印我是main方法,所以执行顺序为2
System.out.println("我是main方法");//2
//在第一次newStydent时,Student加载
Student s1 = new Student();
Student s2 = new Student();
}
}
/*
输出结果:
StudentDemo的静态代码块
我是main方法
Student 静态代码块
Student 构造代码块
Student 构造方法
Student 构造代码块
Student 构造方法
*/