• 【JavaSE】static关键字


    static关键字修饰成员方法成员变量

    静态成员变量

    static修饰的成员方法和成员变量我们称为静态的成员方法和成员变量,那么静态的成员变量和普通的成员变量有什么区别呢?静态的成员变量不属于对象,所以不需要通过对象的引用来访问,直接可以通过类名就可以访问。我们通过一个例子来感受一下:小红小明都是学生,并且都是一年级二班的同学,所以我们定义小红和小明时每次都要定义年级,但这样太麻烦每次实例化对象都要初始化年级这个成员变量,这时我们使用static关键字修饰年级这个成员变量,将他变为静态的成员变量,这样年级只需要初始化化一次就可以了。
    在这里插入图片描述

    甚至我们不需要实例化对象都可以调用静态的成员变量。
    在这里插入图片描述
    总结一下静态成员变量

    1、静态成员变量不属于具体的对象,是类的属性,所有的对象共享,但不存储在某个对象的空间中。
    2、静态成员变量即可以通过对象访问,也可以通过类访问,我们推荐使用类名去访问静态成员变量
    3、静态成员变量是存储在方法区的
    4、静态成员变量的生命周期伴随类的一生。

    静态成员方法

    static修饰的成员方法我们称为静态的成员方法,是类的方法, 不是某个对象的方法。静态成员一般都是通过静态方法来访问的。
    在这里插入图片描述
    像这样用private修饰的成员变量我们如何在类外赋值与调用呢?我们通过get\set方法去赋值和调用,对于静态的成员变量来说我们需要使用静态的方法。
    在这里插入图片描述
    在这里插入图片描述

    总结一下静态成员方法

    1、静态成员方法不属于某个具体的对象,是类方法
    2、可以通过对象调用,也是通过类名.静态方法名(…)方式调用,更推荐后者。
    3、不能再静态方法中访问任何非静态成员变量
    4、静态方法中不能调用任何非静态方法,因为非静态方法有this参数,再静态方法中调用时候无法传递this引用。

    static成员变量的初始化

    1、直接赋值
    在这里插入图片描述
    类似于这样的初始化我们就称为直接赋值
    2、默认初始化
    3、通过get和set方法来进行初始化
    在这里插入图片描述
    4、可以在构造对象的时候进行赋值,不推荐这样写,因为静态成员变量不属于某个对象。
    5、可以通过代码块进行赋值,什么是代码块呢?下面我们就来讲一讲。

    代码块

    我们说使用{}定义的一段代码就称为代码块,我们根据代码块的定义的位置以及关键字,可以分为以下四种代码块。

    普通代码块

    普通代码块:定义在方法中的代码块
    在这里插入图片描述

    构造代码块

    构造块:定义在类里的代码块,也叫:实例代码块。构造代码块一般用于初始化成员变量

    在这里插入图片描述

    静态代码块

    使用static定义的代码块称为静态代码块,一般用于初始化静态成员变量。在实例化对象之前准备一些数据。

    在这里插入图片描述

    代码块的执行顺序

    在这里插入图片描述
    我们实例化一个对象,看一看代码执行的顺序是什么
    在这里插入图片描述
    通过执行的结果我们发现静态代码块优先执行,之后是普通代码块,最后是构造代码块。但是当我们第二次实例化对象时,静态代码块并没有执行。
    在这里插入图片描述
    所以我们可以说,静态代码块只被执行了一次。

    继承中的代码块执行顺序

    我们来看看在继承中代码块的顺序:
    在这里插入图片描述
    我们通过运行可以总结出来,继承关系中的代码块执行顺序为:

    1、父类静态代码块优先于子类静态代码块,且最早执行
    2、父类普通代码块和构造代码块执行
    3、子类普通代码块和构造代码块最后执行
    4、同样的静态代码块只被执行一次

    简单总结就是静态代码块优先,父类优先于子类。

  • 相关阅读:
    老杨说运维|今年这个会议非比寻常
    AD域-打印机部署
    LangChain 安全特性全解析与实践指南
    X3DS V4.0 正式发布 性能、功能、易用性和安全性大幅提升
    某米ax3000路由器组网解析
    event.stopPropagation()
    【每天学习一点新知识】跟咩咩一起学“宽字节注入”
    拼图小游戏
    gitlab重置root密码
    ARK Invest:比特币,一种被低估且独特的避险资产
  • 原文地址:https://blog.csdn.net/weixin_64182409/article/details/127843403