`
Caoyu_google
  • 浏览: 21971 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 4中代码块执行顺序

    博客分类:
  • java
阅读更多
public class FF extends DD
{
    {
        System.out.print("1");       
    }
    
    FF()
    {
        super(7);
        System.out.print("2");
    }
    
    static
    {
        System.out.print("3");
    }
    
    public static void main(String[] args)
    {
        FF f = new FF();
    }
}

class DD
{
    DD(int x)
    {
        System.out.print("4");
        System.out.print(x);
    }
    
    static
    {
        System.out.print("5");
    }
    
    {
        System.out.print("6");
    }
}



先把输出的结果写出来吧:5364712

我们知道static代码块是在装载代码的时候就放在代码区的,

然后寻找静态的main方法

无疑问,静态的代码是先执行的,而类FF继承了DD,

所以父类的静态代码先执行再执行子类的静态代码,

这时会输出:53

由于{}代码块优先级大于构造函数,所以先执行父类的{}代码块,

这时输出是:536

下面关键的来了,类之所以成为类的关键:一定要有构造方法。所以最后要形成父类的形态,再子类中的构造器一定要有调用父类构造方法的声明,即super(***);而并非现在就执行了子类的构造方法,可以理解为只是执行了Super()方法所致
这时输出是53647

接下来在一子类中:构造代码块优先于普通代码块
这时输出是5364712




小结:
1.静态的属性和静态的语句块都是在类加载的时候完成,非静态的东西是在创建对象的时候执行的.

2.单个类的初始化顺序如下:
  静属->静块->非静属->非静块->构造函数.

3.有继承关系的类的初始化顺序如下:
    父静属->父静块->子静属->子静块
  ->父非静属->父非静块->父构造->子非静属->子非静块->子构造.

比如你要生成一个子类的对象,当然先得知道父类的形态啦,有父才有子嘛。先父类静态代码块,再子类静太代码块,先父非静太代码块,再子类非静态代码块。
分享到:
评论

相关推荐

    Java 普通代码块静态代码块执行顺序(实例讲解)

    下面小编就为大家带来一篇Java 普通代码块静态代码块执行顺序(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Java:静态代码块和构造函数执行顺序

    /*大体上顺序是这样的:(也可以说是优先级,同一级的按顺序执行)  1 静态变量,静态代码块(类加载时执行,类不加载不执行) ... System.out.println("类Test实例代码块被执行 4"); //实例代码块 } p

    java 代码块与静态代码块加载顺序

    主要介绍了java 代码块与静态代码块加载顺序的相关资料,需要的朋友可以参考下

    Java静态代码块作用及执行顺序解析

    主要介绍了Java静态代码块作用及执行顺序解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java常见笔试、面试题目深度剖析,方法重写详解、静态代码块与构造方法执行顺序问题

    Java常见笔试、面试题目深度剖析,方法重写详解、静态代码块与构造方法执行顺序问题

    java中静态代码块与构造方法的执行顺序判断

    对静态代码块以及构造函数的执行先后顺序,一直很迷惑,直到最近看到一段代码,发现终于弄懂了,所以这篇文章主要给大家介绍了关于如何判断java中静态代码块与构造方法的执行顺序的相关资料,需要的朋友可以参考下。

    举例说明Java中代码块的执行顺序

    主要介绍了举例说明Java中代码块的执行顺序,包括静态属性和非静态属性以及构造函数等相关的执行先后,需要的朋友可以参考下

    由浅入深详解Java 类的实例化顺序

    在子类对象被实例化的过程中,变量、构造方法以及代码块三者的先后顺序为: 1. 父类的静态变量和静态代码块,按代码先后顺序执行 2. 子类的静态变量和静态代码块,按代码先后顺序执行 3. 父类的成员变量和普通...

    Java开发技术大全(500个源代码).

    代码范例列表 第1章 示例描述:本章演示如何开始使用JDK进行程序的开发。 HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载...

    实例解析JAVA中代码的加载顺序

    主要介绍了举例说明Java中代码块的执行顺序,需要的朋友可以参考下

    有关static block静态代码块和单态设计模式

    静态代码块(static block ),不包含在任何方法体中当类被载入时,自动执行静态代码块,且只被执行一次经常用于类属性的初始化。 这是网上通行的关于静态代码块的定义。 在Java中,类装载器把一个类装入Java虚拟机...

    李妍的Java学习之路-分支结构

    分支结构允许程序在执行过程中根据特定条件执行不同的代码块。在Java中,有两种主要的分支结构:if语句和switch语句。 本文档介绍了Java语言中的分支结构,主要介绍了if语句和switch语句的使用。if语句可以根据条件...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    代码块和代码执行顺序 Java自动拆箱装箱里隐藏的秘密 Java中的Class类和Object类 Java异常 解读Java中的回调 反射 泛型 枚举类 Java注解和最佳实践 JavaIO流 多线程 深入理解内部类 javac和javap Java8新特性终极...

    简单了解java中静态初始化块的执行顺序

    主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Thinking in Java简体中文(全)

    附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/...

    Java工程师面试复习指南

    代码块和代码执行顺序 Java自动拆箱装箱里隐藏的秘密 Java中的Class类和Object类 Java异常 解读Java中的回调 反射 泛型 枚举类 Java注解和最佳实践 JavaIO流 多线程 深入理解内部类 javac和javap Java8新特性终极...

    什么是Java中的异常处理机制?Java中的异常分为哪些类型?(java面试题附答案).txt

    Java中的异常处理机制是一种用于捕获和处理程序运行过程中可能出现的异常情况的机制。当程序执行过程中出现异常时,异常处理机制允许我们捕获和处理这些异常,以便程序能够以一种可控的方式处理错误情况。 Java中的...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 if语句的嵌套 71 4.2.3 if-else语句 73 4.2.4 if-else语句嵌套 75 4.3 ...

    java联想(中文)

    附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/...

Global site tag (gtag.js) - Google Analytics