java代码执行顺序求解释?

问题描述

java代码执行顺序求解释?
public class ExA {
    private static ExA a = new ExA();
    static {
        System.out.println("父类--静态代码块");
    }

    public ExA() {
        System.out.println("父类--构造函数");
    }

    {
        System.out.println("父类--非静态代码块");
    }

    public static void main(String[] args) {
        new ExB();
    }
}

class ExB extends ExA {
    private static ExB b = new ExB();
    static {
        System.out.println("子类--静态代码块");
    }
    {
        System.out.println("子类--非静态代码块");
    }

    public ExB() {
        System.out.println("子类--构造函数");
    }
}

父类--非静态代码块
父类--构造函数
父类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数

解决方案

静态代码块在类加载的时候就执行,非静态代码块在执行构造方法时先执行非静态代码块在执行构造方法

解决方案二:

java代码执行顺序
Java代码执行顺序
Java代码的执行顺序

解决方案三:

你的测试输出已经很好地说明了java类处理的流程了,首先是静态代码块的执行,而非静态代码块是在创建实例对象new操作的时候执行的。

时间: 2024-10-30 09:31:42

java代码执行顺序求解释?的相关文章

java普通代码执行顺序问题?

问题描述 java普通代码执行顺序问题? 其实我也是这样想的 不过那两天做js ,在js中调用了其他A方法,然后又调用了B方法由于A方法没执行完就跳到了B,我就想java如果按照顺序执行到a这步,要在循环中调用其他类中的方法 很长时间之后才能处理完,此时a下面的b方法是否会先执行. ---------------- 我在A类中调用了B类中的方法export,传入了5个list. 然后分别写了对5个list的操作,在所有操作的最后都分别有一个嵌套循环 for(int i=0;i<x;i++){ f

Java基础-代码执行顺序(重要)

Java代码初始化顺序:     1.由 static 关键字修饰的(如:类变量(静态变量).静态代码块)将在类被初始化创建实例对象之前被初始化,而且是按顺序从上到下依次被执行.静态(类变量.静态代码块)属于类本身,不依赖于类的实例.     2.没有 static 关键字修饰的(如:实例变量(非静态变量).非静态代码块)初始化实际上是会被提取到类的构造器中被执行的,但是会比类构造器中的代码块优先执行到,非静态(实例变量.非静态代码块)的地位是相等的,它们将按顺序被执行. 形参: 比如你定义一个

孙鑫-Visual C++的一段代码搞不懂求解释

问题描述 Visual C++的一段代码搞不懂求解释 说一下自己的理解.题目是孙鑫老是的文本输出的例子. 1:GetBkColor得到背景白色,然后SetTextColor(白色)把背景白色设置为文字颜色.跟着clr应该是赋值得到白色了吧,但是F5看的时候是黑色,就要原文字颜色.我这么理解应该错了 1 COLORREF clr=dc.SetTextColor(dc.GetBkColor()); //GetBkColor属于dc对象,改变dc中的背景值(白色).然后SetTextColor用白色值

java代码混淆工具求推荐

问题描述 java代码混淆工具求推荐 java代码混淆比较好用的工具,求推荐,比较常用的管用的,最好有教程,不知道哪里有比较详细的比较帖子.谢谢! 解决方案 BCompare 不用教程

whitespace-这段代码什么意思求解释

问题描述 这段代码什么意思求解释 #include #include #include #include //Constants #define LINELENGTH 100 // Function prototypes void reverse_words(char* words[], char* rwords[], int count); void print_words(char* words[]); int mark_words(char* line, char* words[]); /

探析浏览器执行JavaScript脚本加载与代码执行顺序_javascript技巧

本文主要基于向HTML页面引入JavaScript的几种方式,分析HTML中JavaScript脚本的执行顺序问题 1. 关于JavaScript脚本执行的阻塞性 JavaScript在浏览器中被解析和执行时具有阻塞的特性,也就是说,当JavaScript代码执行时,页面的解析.渲染以及其他资源的下载都要停下来等待脚本执行完毕①.这一点是没有争议的,并且在所有浏览器中的行为都是一致的,原因也不难理解:浏览器需要一个稳定的DOM结构,而JavaScript可能会修改DOM(改变DOM结构或修改某个

Android中执行java命令的方法及java代码执行并解析shell命令_Android

android中执行java命令的方法大家都晓得吗,下面一段内容给大家带来了具体解析. android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,但是却并不能执行java命令. 那么在android的shell中是否就不能执行java程序了呢. 答案是否定的.我们可以通过app_process来执行java程序. 写一个hello world吧,就是刚开始学java的时候 写得那个hello world,这次要在android上运行. 用记事本新建

Android中执行java命令的方法及java代码执行并解析shell命令

android中执行java命令的方法大家都晓得吗,下面一段内容给大家带来了具体解析. android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,但是却并不能执行java命令. 那么在android的shell中是否就不能执行java程序了呢. 答案是否定的.我们可以通过app_process来执行java程序. 写一个hello world吧,就是刚开始学java的时候 写得那个hello world,这次要在android上运行. 用记事本新建

java代码执行js-java代码模拟浏览器,访问网页;使网页中的统计代码能执行。

问题描述 java代码模拟浏览器,访问网页:使网页中的统计代码能执行. 我的操作步奏: 1.Eclipse里面写个简单的jsp页面,加入CNZZ统计脚本,启动服务器. 2.浏览器访问.浏览器中访问jsp,CNZZ系统能统计到该次访问.3.java代码访问.HttpClient的get请求访问同一地址(浏览器中地址),能获得正确响应,但是CNZZ系统,统计不到该次访问.也就是说没有执行统计脚本. 第三点中如何让CNZZ统计到代码的访问???(我百度查看过很多文章,一般就停留在获取页面代码,不能像浏