类的成员之:代码块
格式:{}
代码块分类:静态代码块 VS 非静态代码块
注意:代码块只能使用static修饰
静态代码块: 1.静态代码块是随着类的加载而加载的(类加载只加载一次) 2.类加载优先于类的创建(静态代码块的执行优先于非静态代码块) 3.静态代码块可以有多个,多个静态代码块之间是从上向下依次执行 4.静态代码块:不能调用实例变量和非静态方法
非静态代码块:1.非静态代码块是随着对象的创建而加载 2.非静态代码块的执行优先于构造器 3.非静态代码块可以有多个,非多个静态代码块之间是从上向下依次执行 4.非静态代码块:可以调用静态方法和类变量
思考:什么时候使用代码块?
静态代码块:随着类加载而执行的代码放在非静态代码块中
非静态代码块:只要创建对象时就会执行的代码放在非静态代码块中
class Animal{
String name;
static int age;
//非静态代码块:可以调用静态方法和类变量
{
System.out.println("非静态代码块1");
}
{
System.out.println("非静态代码块2");
}
{
System.out.println("非静态代码块3");
}
//静态代码块:不能调用实例变量和非静态方法
static{
System.out.println("静态代码块1"+age);
}
static{
System.out.println("静态代码块2");
}
static{
System.out.println("静态代码块3");
}
public Animal(){
System.out.println("animal()");
}
public void info(){
System.out.println("non-static info");
}
public static void show(){
System.out.println("static show");
}
}
public class BlockTest {
public static void main(String[] args) {
Animal.show();
System.out.println("---------------------------");
new Animal();
System.out.println("---------------------------");
new Animal();
}
}