Java static(三) – 静态代码块

Java static(三) – 静态代码块静态代码块static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内JVM加载类时会执行这些静态代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们每个静态代码块只会被执行一次实例说明//父类publicclassParentStatic{privatestaticStringpstr=”父类静态变量”;static{System.o.

大家好,又见面了,我是你们的朋友全栈君。

  1. 静态代码块
    static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内
    JVM加载类时会执行这些静态代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们
    每个静态代码块只会被执行一次
  2. 实例说明
// 父类
public class ParentStatic { 
   
    private static String pstr = "父类静态变量";

    static { 
   
        System.out.println("执行父类静态代码块:" + pstr);
    }

    public ParentStatic() { 
   
        System.out.println("执行父类构造方法。。。");
    }
}

// 子类
public class ChildStatic extends ParentStatic { 
   
private static String cstr = "子类静态变量";

    static { 
   
        System.out.println("执行子类静态代码块:" + cstr);
    }

    public ChildStatic() { 
   
        System.out.println("执行子类构造方法。。。");
    }
}
public class StaticBlockTest { 
   

    public static void main(String[] args) { 
   
        ChildStatic childStatic1 = new ChildStatic();
        ChildStatic childStatic2 = new ChildStatic();
        System.out.println("类静态代码块只会在加载该类时执行一次。。。");
    }
}

运行结果:
在这里插入图片描述

运行过程:

  • 执行ChildStatic childStatic1 = new ChildStatic();先要加载ChildStatic类,加载时发现继承于类ParentStatic,转去加载父类
  • JVM加载父类ParentStatic时,发现父类有静态代码块,便执行父类的静态代码块(父类有父类还会往上找父类静态)
  • 父类ParentStatic加载完成,继续加载子类ChildStatic,发现子类有静态代码块,执行子类静态代码块
  • 类ChildStatic加载完成,执行初始化new ChildStatic(),先调用父类构造函数,在调用子类构造函数
  • 执行ChildStatic childStatic2 = new ChildStatic(),由于此时子类ChildStatic已经加载过了,所以静态代码块不会再执行,直接初始化,调用父类构造函数,再调用子类构造函数
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160562.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月16日 下午10:16
下一篇 2022年7月16日 下午10:16


相关推荐

  • 全国大学生电子设计竞赛(七)–逆变电源设计

    全国大学生电子设计竞赛(七)–逆变电源设计  逆变电源在全国大学生电子设计竞赛电源类题目中占十分重要的地位。每一个参加全国大学生电子设计竞赛并选择电源方向的学生都需要掌握逆变电源的设计制作。与整流相反,把直流电变为交流电称为逆变。逆变电路的应用非常广泛。当需要蓄电池、干电池、太阳能电池等直流电源向交流负载供电时,就需要逆变电路。除此之外,应用非常广泛的交流电机调速用变频器、不间断电源UPS、感应加热电源等电力电子装置的核心电路就是逆变电…

    2022年6月12日
    46
  • supervisor常见报错[通俗易懂]

    supervisor常见报错[通俗易懂]supervisor常见报错

    2022年4月24日
    45
  • 二进制与十进制的讲解与转换「建议收藏」

    二进制与十进制的讲解与转换「建议收藏」文章目录?什么是十进制呢??什么是二进制??十进制和二进制之间可以转换吗??十进制与二进制之间的转换?二进制转十进制?十进制转二进制?写在最后哈喽,大家好!这是我的第一篇博客,就先来介绍一下自己吧,我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在CSDN上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。本文主要讲解二进制以及进制之间的转换,如果大家读后觉得有用的话,还请大家多多支持博主:欢迎❤️点赞

    2022年10月18日
    3
  • docker dockerfile详解_docker exec 进入容器

    docker dockerfile详解_docker exec 进入容器前言Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。Dockerfile简介Dockerfile是用来构建Docker镜像的构建文件,是由一系列

    2022年7月28日
    6
  • 别急着“养虾”,OpenClaw的安全账单和Token消耗你算清了吗?

    别急着“养虾”,OpenClaw的安全账单和Token消耗你算清了吗?

    2026年3月14日
    2
  • dfile.encoding=utf-8 乱码_OrdosTF格式是什么格式

    dfile.encoding=utf-8 乱码_OrdosTF格式是什么格式解析ASN10x80问题所有X509证书都用一种ASN1格式,其为一种嵌套储存格式。ASN1规则繁琐,此文不说明,可以研究此链接。本文主要说明0x80问题,同事问起这问题,一时想不起来,现在在此备份。所有ASN1格式都是0x30开头,表示ASN1tag;0x82用来表示03C2的长度,先搁置;而03C2其用来表示后面数据长度,如下所示。308203C

    2025年11月2日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号