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

相关文章

  • 暗黑3 科普护盾的优先级与被动法能护体的刷新条件

    暗黑3中的科普护盾和被动法能护体是两种重要的防御手段,下面将详细介绍它们的优先级和刷新条件: 科普护盾的优先级 科普护盾是一种可以提供额外伤害减免的技能,其优先级如下: 拥有绝对优势的加强型护盾,如玻璃炮身护盾、碳纤维协议、回溯护盾等。 其他加强型护盾,如鸟类群集、交错护盾等。 标准型护盾,如神盾、石化护盾等。 轻型护盾,如粘附簇、追踪器等。 在选择护盾时,…

    other 2023年6月27日
    00
  • Spring框架开发scope作用域分析总结

    Spring框架开发scope作用域分析总结 1. 什么是作用域(scope)? 在Spring框架中,作用域(scope)指的是对象的生命周期和可见性范围。Spring提供了多种作用域,每种作用域都有不同的特点和适用场景。 2. Spring框架中的作用域类型 2.1 Singleton Singleton是Spring框架默认的作用域,也是最常用的作用域…

    other 2023年8月19日
    00
  • 数字信号处理实验(六)——fir滤波器的设计

    数字信号处理实验(六)——fir滤波器的设计 前言 在数字信号处理中,滤波器是非常重要的一部分。滤波器可以改变信号的频率分量,实现对信号的去噪、分析、增益等操作。本篇文章将着重介绍fir滤波器,它是一种常用的数字滤波器,广泛应用于信号处理领域中。 fir滤波器是什么 fir滤波器全称为Finite Impulse Response,它的特点是在时域上为有限长…

    其他 2023年3月28日
    00
  • python中子类调用父类函数的方法示例

    当我们定义一个子类时,它可以继承父类的所有属性和方法。但有时候子类需要调用父类的某些方法,可以通过以下方法实现: 使用 super() 函数 super() 函数可以用于调用父类的方法。它返回一个代理对象,通过代理对象调用了父类的方法。我们通常使用 super() 函数的方式如下: class ParentClass: def foo(self): prin…

    other 2023年6月26日
    00
  • C语言编程C++自定义个性化类型

    我可以提供一份“C语言编程C++自定义个性化类型”的攻略: 简介 C++是C语言的一个扩展和升级版,支持面向对象编程,具有更多的语言特性和功能。自定义类型是C++的重要特性,它允许我们创建自己的数据类型和对象。本文将详细讲解如何使用C++来定义个性化类型。 定义结构体 在C++中,可以使用结构体来定义新的类型。结构体是由一些变量和函数组成的用户自定义类型。 …

    other 2023年6月25日
    00
  • 基于element-ui对话框el-dialog初始化的校验问题解决

    下面我将详细讲解“基于element-ui对话框el-dialog初始化的校验问题解决”的完整攻略。 问题描述 在使用 element-ui 的 el-dialog 组件创建一个对话框时,我们经常需要在对话框初始化时对一些初始数据进行校验,以确保其符合要求。然而,在组件初始化时执行校验逻辑时会遇到一个问题:由于对话框是异步加载的,而校验逻辑是同步执行的,导致…

    other 2023年6月20日
    00
  • Windows Server 2019 网络负载均衡服务配置与管理(理论+网络拓扑及说明)

    Windows Server 2019网络负载均衡服务(Network Load Balancing,简称NLB)可以将多个计算机上同一服务的流量分布到一组服务器上,从而提高服务的稳定性和可用性。下面,将为大家详细讲解Windows Server 2019 NLB服务的配置与管理: 1. 理论知识 1.1 NLB基础概念 Windows Server 201…

    other 2023年6月27日
    00
  • java IP地址网段计算的示例代码

    Java IP地址网段计算的示例代码攻略 1. 简介 IP地址网段计算是指根据给定的IP地址和子网掩码,计算出该IP地址所在的网段范围。在Java中,可以使用位运算和逻辑运算来实现这个功能。 2. 示例代码 下面是一个示例代码,展示了如何计算IP地址网段的范围: import java.net.InetAddress; import java.net.Unk…

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