1. 普通代码块
编写在顺序执行的代码流程中的代码块
2.构造代码块
构造代码块,随着对象的每次创建,执行一次。且执行在构造方法前。
区别于构造方法的是:
无论用户调用哪一个构造方法来创建对象,构造代码块都必然执行。
public class Demo3 {
public static void main(String[] args) {
{
/**
* 编写在顺序执行的代码流程中的代码块
*/
}
{
System.out.println("普通代码块");
}
Person p=new Person();
}
}
class Person{
String name;
int age;
{
System.out.println("构造方法代码块执行1");
}
public Person(){
System.out.println("构造方法执行1");
}
public Person(String name){
System.out.println("构造方法执行2");
}
{
System.out.println("构造方法代码块执行2");
}
}
}
3.静态代码块
随着类加载(第一次使用)且只加载一次,静态代码块执行。
相比构造代码块以及普通代码块,静态代码块最优先执行。
public class Demo3 {
public static void main(String[] args) {
{
/**
* 编写在顺序执行的代码流程中的代码块
*/
}
{
System.out.println("普通代码块");
}
Person p=new Person();
Person p2=new Person();
}
}
class Person{
String name;
int age;
{
System.out.println("构造方法代码块执行1");
}
static {
System.out.println("静态代码块执行");
}
public Person(){
System.out.println("构造方法执行1");
}
public Person(String name){
System.out.println("构造方法执行2");
}
{
System.out.println("构造方法代码块执行2");
}
}
}