一文搞懂java中类及static关键字执行顺序

以下是详细的攻略:

一文搞懂Java中类及static关键字执行顺序

在Java中,类及static关键字的执行顺序是非常重要的问题。本文将为大家详细介绍Java中类及static关键字的执行顺序,以及一些实际的示例分析。

类的执行顺序

在Java中,类的执行顺序如下:

  1. 加载父类
  2. 加载子类
  3. 执行父类的static代码块(不会执行构造方法)
  4. 执行子类的static代码块(不会执行构造方法)
  5. 执行父类的构造方法
  6. 执行子类的构造方法

因此,父类中的static代码块会在子类的static代码块执行之前执行,而所有的构造方法都会在static代码块之后执行。

以下代码展示了类的执行顺序:

class Parent {
    static {
        System.out.println("执行父类的static代码块");
    }

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

class Child extends Parent {
    static {
        System.out.println("执行子类的static代码块");
    }

    public Child() {
        System.out.println("执行子类的构造方法");
    }
}

public class Main {
    public static void main(String[] args) {
        new Child();
    }
}

输出结果:

执行父类的static代码块
执行子类的static代码块
执行父类的构造方法
执行子类的构造方法

static的执行顺序

在Java中,static关键字的执行顺序如下:

  1. 静态变量从上到下按顺序执行赋值(如果有)和static代码块中的代码
  2. 静态方法只能调用静态变量和静态方法
  3. 非静态方法既能调用静态方法和静态变量,也能调用非静态变量和非静态方法

以下代码展示了static的执行顺序:

class Test {
    static int a = 1;

    static {
        a = 2;
    }

    public static void main(String[] args) {
        System.out.println(Test.a);
    }

    static {
        a = 3;
    }
}

输出结果:3

首先,静态变量a按顺序执行了赋值操作,最后的值为3。然后,静态代码块中的代码也按顺序执行,因此a的值在第二个静态代码块中修改为了3。最后,main方法输出了a的值,也就是3。

总结

本文详细介绍了Java中类及static关键字的执行顺序,并提供了相关的示例代码。理解这些执行顺序是Java编程的基础。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文搞懂java中类及static关键字执行顺序 - Python技术站

(0)
上一篇 2023年6月20日
下一篇 2023年6月20日

相关文章

  • phpstorm怎么全局搜索

    以下是关于“PhpStorm如何进行全局搜索”的完整攻略: 步骤1:打开PhpStorm 首先,需要打开PhpStorm编辑器。 步骤2:打开全局搜索窗口 在PhpStorm中,可以使用以下快捷键打开全局搜索窗口: Windows和Linux系统:Ctrl + Shift + F macOS系统:Command + + F 也可以使用以下步骤打开全局搜索窗口…

    other 2023年5月7日
    00
  • JS实现非首屏图片延迟加载的示例

    JS实现非首屏图片延迟加载可以提高网站的性能,避免一次性加载全部图片对网站造成的压力,下面详细介绍实现的攻略: 1. 了解非首屏图片延迟加载 首先需要了解什么是非首屏图片延迟加载,它的原理是在网站的加载过程中,只加载当前屏幕所需展示的图片,等到用户滚动到相应位置时再加载相应的图片。这样做可以减少首屏加载时间,提高网站加载速度。 2. 实现延迟加载的JS代码 …

    other 2023年6月25日
    00
  • springboot如何引入外部yml配置文件

    下面是关于“springboot如何引入外部yml配置文件”的完整攻略。 1.准备工作 在开始之前,确保您已经安装了jdk、maven以及您喜欢的文本编辑器或IDE工具。 2. 创建新的Spring Boot项目 首先在命令行中输入下面的命令,创建一个新的Spring Boot项目。 $ mvn archetype:generate -DgroupId=co…

    other 2023年6月25日
    00
  • js的from方法和fill方法

    JS的from方法和fill方法 介绍 在JavaScript中,数组是一种常用的数据结构。从ES6开始,JavaScript为数组提供了一些新的方法,其中包括了from和fill方法。 from方法 from方法是用来将其他数据类型转换成数组的。它接收一个可迭代对象或类数组对象作为参数,返回一个新的数组对象,这个数组包含了传入对象的所有元素。 我们来看一下…

    其他 2023年3月28日
    00
  • VBS递归创建多级目录文件夹的方法

    VBS递归创建多级目录文件夹的方法 背景及介绍 在VBS脚本编写中,经常会有创建多级目录文件夹的需求,此时可以使用递归的方法来实现。递归是指函数或过程在运行中通过调用自身的方式来实现对问题求解的。下面将介绍VBS中递归创建多级目录文件夹的实现方法。 实现步骤 VBS中递归创建多级目录文件夹的具体步骤如下: 定义函数 CreateFolder ,参数为文件夹完…

    other 2023年6月27日
    00
  • Java数组的特性_动力节点Java学院整理

    Java数组的特性-动力节点Java学院整理 什么是Java数组? Java数组是一种容器,可以存储多个相同类型的元素。 数组在内存中是连续的,由于其特殊的数据结构,它们可以在O(1)时间内访问特定元素。 如何声明和初始化Java数组? 声明一个数组的语法: dataType[] arrayName; 初始化一个数组的语法: dataType[] array…

    other 2023年6月25日
    00
  • css 文本显示点点点

    CSS 文本显示点点点的完整攻略 在网页设计中,有时需要对文本进行截断处理,以便在有限的空间内显示更多的内容。一种常见的处理方式是使用点点点(…)来表示被截断的文本。本文将为您提供一份CSS文本显示点点点的完整攻略,包括实现思路、解决方法和两个示例说明。 实现思路 CSS文本显示点点点的实现思路如下: 检测文本长度:检测文本长度,判断是否需要进行截断处理…

    other 2023年5月5日
    00
  • matlab中normalize函数用法

    以下是关于“Matlab中normalize函数用法”的完整攻略: normalize函数概述 normalize函数是Matlab中的一个函数,用于将向量或矩阵归一化。归一化后的向量或矩阵的范数为1。 normalize函数语法 normalize函数的语法如下: B = normalize(A) B = normalize(A,dim) B = norm…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部