java中关于代码块,属性的调用顺序

java中关于代码块,属性的调用顺序,第1张

java中关于代码块,属性的调用顺序 java中关于代码块的调用顺序

代码块如下所示

class Movie{
    private String name;
    private  double price;
    private String director;

   
   {//代码块
        System.out.println("电影屏幕打开");
        System.out.println("广告开始");
        System.out.println("电影还未开始");
}

静态代码块就是在代码块前加了static,如下所示

class AA{
    {
        System.out.println("AA 普通代码块1被执行...");
    }
    static{//静态代码块
        System.out.println("AA 静态代码块1被执行...");
    }
}

关于静态属性,普通属性也是同代码块一样,区别在于有没有static

static代码块是在类加载时,执行的,而且只会执行一次;

类什么时候被加载?

①创建对象实例时;

②创建子类对象实例,父类也会被加载;

③使用类的静态成员时。

创建一个类时,在一个类调用顺序是(先静态再普通)

①调用静态代码块和静态属性初始化(两个优先级一样,如果出现多个则按照定义顺序调用);

②调用普通代码块和普通属性(优先级一样,出现多个按照定义顺序调用);

③调用构造器。

创建一个子类对象时(继承关系)调用顺序

①父类的静态代码块和静态属性;

②子类静态代码块和静态属性;

③父类普通代码块和普通属性初始化;

④父类构造方法;

⑤子类普通代码块和普通属性初始化;

⑥子类的构造方法。

最后附上代码可以自己去运行 一下

public class CodeBlockDetail01 {
    public static void main(String[] args) {
        //类加载情况举例(static只能执行一次)
        //1.创建对象实例(new)
        //AA aa = new AA();
        //2.创建子类对象实例,父类也会被加载
        BB bb = new BB();
        //3.使用类的静态成员时(静态属性,静态方法)
        System.out.println(cat.n1);
        // cat cat = new cat();
        //static代码块是在类加载时,执行的,而且只会执行一次;
//        DD dd1 = new DD();
//        DD dd2 = new DD();
        //普通代码块在创建对象实例时会被隐式调用。
        //被创建一次就会被调用一次
        //如果只是使用类的静态成员时,普通代码块并不会执行
        System.out.println(DD.n1);
    }
}
class DD{
    public static int n1 = 100;
    static {
        System.out.println("DD 静态代码块1被执行...");
    }
    //普通代码块,在new对象时,被调用,而且是每创建一个对象就执行一次
    {
        System.out.println("DD 普通代码块2被执行...");
    }
}
class animal{
    static {
        System.out.println("animal 静态代码块1被执行...");
    }
}
class cat extends animal{
    public static int n1 = 999;//静态属性
    //静态代码块
    static {
        System.out.println("cat 静态代码块1被执行...");
    }
}

class AA{
    {
        System.out.println("AA 普通代码块1被执行...");
    }
    static{
        System.out.println("AA 静态代码块1被执行...");
    }
}

class BB extends AA{
    static{
        System.out.println("BB 静态代码块1被执行...");
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5697604.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存