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

yizhihongxing

以下是详细的攻略:

一文搞懂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日

相关文章

  • Wing FTP Server FTP服务器端中文版安装使用教程

    Wing FTP Server FTP服务器端中文版安装使用教程 本教程将介绍如何在 Windows 平台下安装和使用 Wing FTP Server FTP 服务器端中文版。 步骤 1:下载安装程序 首先,您需要从官网下载 Wing FTP Server 中文版的安装程序,并保存到本地硬盘上。下载地址如下: https://www.wftpserver.c…

    other 2023年6月27日
    00
  • winform控件背景透明问题(label..等)

    在WinForm中,控件的背景默认是不透明的,这意味着如果我们将一个控件放在另一个控件的上面,那么下面的控件将会被遮挡。但是,有时候我们需要让控件的背景透明,以便能够看到下面的控件。以下是WinForm控件背景透明问题的完整攻略: 设置控件的背景透明 要设置控件的背景透明,可以使用控件的BackColor属性和TransparencyKey属性。BackCo…

    other 2023年5月7日
    00
  • Java 基础语法之解析 Java 的包和继承

    Java 基础语法之解析 Java 的包和继承 Java 作为面向对象编程的语言,对于代码的组织和扩展提供了很好的支持。其中包和继承作为两个重要的概念,是 Java 中的核心特性之一。本文将从概念入手,详细讲解 Java 中的包和继承的原理和使用方法。 Java 包的概念和使用 Java 中的包可以看作是一种类的组织方式,类似于文件夹的概念。通常情况下,我们…

    other 2023年6月27日
    00
  • nginx相关

    Nginx相关的完整攻略 Nginx是一款高性能的Web服务器和反向代理服务器,具有占用资源少、稳定性高、扩展性强等优点。本文将为您提供一份Nginx相关的完整攻略,包括安装、配置和两个示例说明。 安装Nginx 在Ubuntu系统中,可以使用以下命令安装Nginx: sudo apt-get update sudo apt-get install ngin…

    other 2023年5月5日
    00
  • Office 如何打印A4不干胶标签纸

    下面是关于Office如何打印A4不干胶标签纸的完整攻略,包括设置、调整和两个示例说明。 设置 在打印A4不干胶标签纸之前,需要进行以下设置: 打开Word文档,选择“页面布局”选项卡。 在“页面设置”中,选择“纸张大小”为A4。 在“页边距”中,选择“上下左右”均为0.5厘米。 在“多页”中,选择“1页/纸张”。 点击“确定”按钮保存设置。 调整 在设置完…

    other 2023年5月6日
    00
  • r语言中的attach

    在R语言中,attach函数用于将数据框添加到搜索路径中,以便在代码中可以直接使用数据框中的变量名,不需要使用数据框名称或$符号。但是,使用attach函数可能会导致变名突和代码可读性降低等问题,因此需要谨慎使用。 1. attach函数的语法 attach函数的语法如下: attach(x, pos = 2, name = deparse(substitu…

    other 2023年5月7日
    00
  • 关于python:如何进行不区分大小写的字符串比较?

    以下是关于“关于python:如何进行不区分大小写的字符串比较?”的完整攻略,包含两个示例。 如何进行不区分大小写的字符串比较 在Python中,我们可以使用lower()函数将字符串转换为小写,然后进行比较。以下是两个示例: 1. 使用lower()函数进行比较 str1 = "Hello World" str2 = "hel…

    other 2023年5月9日
    00
  • IOS上实现的自定义仪表盘示例

    IOS上实现的自定义仪表盘示例攻略 1. 简介 自定义仪表盘是一种可视化控件,用于展示应用程序的指定数据,并提供了更加智能、直观和互动的方式与用户进行数据交互。在IOS平台上,自定义仪表盘以其独特的样式和极致的性能优化得到了广泛的应用和普及。 2. 实现流程 2.1 步骤一:创建一个新的IOS应用程序项目 在创建一个新的IOS应用程序项目时,需要选择一个合适…

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