栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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被执行...");
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/697472.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号