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

相关文章

  • Win10 RTM开发者入门全球直播 8月12日13日每晚23:00请锁定Channel 9

    Win10 RTM开发者入门全球直播攻略 1. 确认参与方式 Win10 RTM开发者入门全球直播是通过微软开发者社区的Channel 9平台进行直播的。参与直播需要先注册Channel 9账号,然后在直播开始前到该平台观看。 2. 确认直播时间 Win10 RTM开发者入门全球直播将在8月12日和13日每晚23:00进行两次直播,全球开放观看。 3. 注册…

    other 2023年6月26日
    00
  • Photoshop设计科技感十足的应用程序软件APP图标

    下面是详细讲解 “Photoshop设计科技感十足的应用程序软件APP图标”的完整攻略。 1. 收集灵感 首先,你需要收集一些有关于软件APP图标的设计灵感,可以通过以下途径进行收集: 参考现有APP设计图标,了解当前流行的设计风格和趋势,例如可以浏览Dribbble、Behance等设计社区。 去非设计社区探索,例如Reddit、Pinterest,通过相…

    other 2023年6月25日
    00
  • apache php mysql开发环境安装教程

    Apache、PHP、MySQL是常见的Web开发环境,下面将会详细讲解在Windows系统上搭建这个环境的完整攻略。 安装Apache 下载Apache服务器,可以从Apache官网中下载到最新的稳定版:http://httpd.apache.org/。 运行安装包,一路默认即可,可以自定义安装目录,然后点击Install完成安装。 安装完成后,运行Apa…

    other 2023年6月26日
    00
  • javascript 广告后加载,加载完页面再加载广告

    一、背景简介 当我们打开一个网页的时候,往往会看到很多广告,如果所有广告都是一次性全部加载,那么页面的加载速度就会很慢。为了解决这个问题,我们可以将广告的加载放到页面加载完成之后再进行加载,这就是所谓的“javascript 广告后加载”。 二、实现步骤 HTML 代码编写 首先,我们需要在 HTML 代码中添加广告的框架代码。例如: <div id=…

    other 2023年6月25日
    00
  • Echart绘制趋势图和柱状图总结

    Sprint Boot的“@Resource”的作用与使用方法的完整攻略 在Spring Boot中,@Resource注解用于自动装配Bean,类似于@Autowired注解。本文将提供@Resource注解的完整攻略,包括定义、使用场景、示例和注意事项。 定义 @Resource注解是Java EE 5规范中定义的注解,用于自动装配Bean。它可以用于字…

    other 2023年5月6日
    00
  • kali中john的使用方法

    Kali中John的使用方法的完整攻略 John the Ripper是一款常用的密码破解工具,可以在Kali Linux中使用。本文将介绍在Kali中使用John的完整略,包括两个示例说明。 步骤一:安装John 在使用John之前,需要先安装John。可以使用以下命令在Kali Linux中安装John: sudo apt-get update sudo…

    other 2023年5月9日
    00
  • mybatis使用collection嵌套查询的实现

    MyBatis使用Collection嵌套查询的实现攻略 在MyBatis中,我们可以使用Collection嵌套查询来处理复杂的数据关联关系。这种技术可以帮助我们在查询结果中嵌套加载关联的集合数据,从而避免了多次查询数据库的开销。下面是使用Collection嵌套查询的实现攻略。 步骤一:定义数据模型 首先,我们需要定义相关的数据模型。假设我们有两个实体类…

    other 2023年7月28日
    00
  • hbuilderx对比Android有什么区别? 两款软件特点介绍

    HBuilderX vs. Android: A Detailed Comparison Introduction HBuilderX and Android are two different software tools used in the development of mobile applications. While HBuilderX is …

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