1.普通代码块
普通代码块一般是定义在方法内的,用{}创建,在执行方法时按照书写的顺序进行执行(先出现,先执行)。
上代码
public static void main( String[] args )
{
{
System.out.println("你好!");
}
{
System.out.println("我不好!");
}
}
输出结果:
你好!
我不好!
2.构造代码块
构造代码块是在类中用{}创建的,在对象实例化的时候执行,没实例化一个对象调用一次。
上代码
public class Cat {
{
System.out.println("构造代码块");
}
public Cat(){
System.out.println("无参构造函数");
}
public Cat(String name){
System.out.println("有参构造函数");
}
}
public class Hello {
public static void main( String[] args ){
Cat cat = new Cat();
}
}
输出结果:
构造代码块
无参构造函数
根据上面的代码可以看出构造代码块是优先于构造函数的,在初始化对象时构造函数会根据你调用的执行没调用的不执行,而构造代码块每次初始化对象都会执行。
3.静态代码块
静态代码块是在类中用static{}来创建的,而且只会执行一次,执行的时间是在类加载的时候.。
上代码
public class Cat {
static {
System.out.println("静态代码块");
}
}
public class Hello {
public static void main( String[] args ){
Cat cat = new Cat();
}
}
输出结果:静态代码块
我new了一个Cat就相当于加载了一遍Cat类,所以就会执行静态代码块。
静态代码块不能调用方法体(静态/普通方法)和普通变量,只能调用静态变量。
因为对于静态方法,在类加载的时候,静态方法也已经加载了,但是我们必须要通过类名或者对象名才能访问,也就是说相比于静态代码块,静态代码块是主动运行的,而静态方法是被动运行的。普通方法和普通变量不懂看上一篇