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

代码块(三)

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

代码块(三)

Java代码块细节(二)

4、创建一个对象时,在一个类调用顺序是:(重点,难点):

1)调用静态代码块和静态属性初始化(注意:静态代码块和静态属性初始化调用的优先级一样,如果有多个静态代码块和多个静态变量初始化,则按他们定义的顺序调用)。	
package com.z.codeblock;

public class CodeBockDetail02 {
    public static void main(String[] args) {
        A a = new A();
    }
}

class A{
    //静态属性初始化
    private static int n1 = getN1();

    static{
        System.out.println("A静态代码块01...");
    }
    public static int getN1(){
        System.out.println("getN1被调用~~~");
        return 10;
    }
}


输出:

getN1被调用~~~
A静态代码块01...
2)调用普通代码块和普通属性的初始化(注意:普通代码块和普通属性初始化调用的优先级一样,如果有多个普通代码块和多个普通属性初始化,则按定义顺序调用)。

3)调用构造方法。
package com.z.codeblock;

public class CodeBockDetail02 {
    public static void main(String[] args) {
        A a = new A();
    }
}

class A{
    public A(){
        System.out.println("构造器A()被调用~~~");
    }
    private int n2 = getN2();//普通属性初始化
    {
        System.out.println("A普通代码块01...");
    }
    //静态属性初始化
    private static int n1 = getN1();

    static{
        System.out.println("A静态代码块01...");
    }
    public static int getN1(){
        System.out.println("getN1被调用~~~");
        return 10;
    }
    public static int getN2(){
        System.out.println("getN2被调用~~~");
        return 10;
    }
}


输出:

getN1被调用~~~
A静态代码块01...
getN2被调用~~~
A普通代码块01...
构造器A()被调用~~~

5、构造器的最前面其实隐含了super()和调用普通代码块,静态相关的代码块,属性初始化,在类加载时就执行完毕,因此是优先于构造器和普通代码块执行的。

class A{
  //这里由隐藏的执行要求
  //(1)super();
  //(2)调用普通代码块
  System.out.println("ok");
}
package com.z.codeblock;

public class CodeBockDetail03 {
    public static void main(String[] args) {
        new BBB();
    }
}
class AAA{
    {
        System.out.println("AAA的普通代码块~~~");
    }
    public AAA(){
        System.out.println("AAA()构造器被调用~~~");
    }
}
class BBB extends AAA{
    {
        System.out.println("BBB的普通代码块~~~");
    }
    public BBB(){
        System.out.println("BBB()构造器被调用~~~");
    }
}

输出:

AAA的普通代码块~~~
AAA()构造器被调用~~~
BBB的普通代码块~~~
BBB()构造器被调用~~
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709235.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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