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已经加载过了,所以静态代码块不会再执行,直接初始化,调用父类构造函数,再调用子类构造函数
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 安装了anaconda 还需要单独安装pycharm吗_ugnx10安装教程

    安装了anaconda 还需要单独安装pycharm吗_ugnx10安装教程python环境配置步骤一:Pycharm和Anaconda的安装作者介绍1.复制pycharm和Aanconda的安装包2.安装pycharm3.安装Anaconda作者介绍张伟伟,男,西安工程大学电子信息学院,2019级硕士研究生,张宏伟人工智能课题组。研究方向:机器视觉与人工智能。电子邮件:2430290933@qq.com课题组CSDN官方账号,欢迎一键三连:https://blog.csdn.net/m0_37758063/article/details/113527955?s

  • 镇远古城特色美食_镇远古城景点

    镇远古城特色美食_镇远古城景点  镇远是贵州东部的一座边城,“九山抱一水,一水分两城”,这里的一水,指的就是舞阳河。镇远古镇被舞阳河以“S”形的婀娜姿势穿越而过,分为南北两岸。这座有着2000多年悠久历史的古镇还保留着许多明清时代的古建筑。  …

  • Android之复合按钮CompoundButton[通俗易懂]

    Android之复合按钮CompoundButton[通俗易懂]有些开发者看到这个可能会有些一头雾水,但其实CompoundButton是抽象的复合按钮,因为是抽象类,所以不能直接使用。实际开发中用的是CompoundButton类的几个派生类,主要有复选框CheckBox、单选按钮RadioButton以及开关按钮Switch,这些派生类都可以使用Compound的属性和方法。CompoundButton在布局文件中主要有如下两个属性: checked:指定按钮的勾选状态,true表示勾选,false表示未勾选。默认未勾选。 button:指定左侧

  • pycharm更换账号/pycharm更换jetBrains许可证

    pycharm更换账号/pycharm更换jetBrains许可证pycharm更换jetBrains账号/pycharm更换许可证

  • jquery监听浏览器刷新_jQuery刷新浏览器页面大小

    jquery监听浏览器刷新_jQuery刷新浏览器页面大小jquery监听浏览器刷新基本代码段,用于在使用JavaScript调整浏览器大小的情况下刷新页面。//refreshpageonbrowserresize$(window).bind(‘resize’,function(e){console.log(‘windowresized..’);this.location.reload(false);/*false…

  • SecureCRT 设置超时自动断开连接时长

    SecureCRT 设置超时自动断开连接时长SecureCRT 设置超时自动断开连接时长

发表回复

您的电子邮箱地址不会被公开。

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