`
Caoyu_google
  • 浏览: 23205 次
  • 性别: 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基础之代码块.docx

    在 Java 中,代码块的运行顺序是按照以下顺序执行的: 1. 静态代码块(static{})从上到下依次执行 2. main 方法 3. 构造块({})从上到下依次执行 4. 构造器 例如: ```java public class Black { // 构造器 ...

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

    在Java编程语言中,了解代码块的执行顺序对于编写高效且无错的代码至关重要。这里我们将深入探讨Java中的普通代码块(实例初始化块)和静态代码块...希望这个实例和解释能帮助你更好地理解和应用Java的代码块执行顺序。

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

    静态代码块的执行顺序取决于类的加载顺序,通常是在类的加载过程中执行。 在上面的实例代码中,我们可以看到一个静态代码块 `static { ... }`,这个代码块位于 `User` 类的静态域中。根据 Java 语言规范,这个代码...

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

    Java静态代码块作用及执行顺序解析 Java静态代码块是Java语言中的一种特殊代码块,它们在类加载的时候执行,且只执行一次。它们通常用来初始化静态变量、设置静态变量的初始值等。静态代码块的作用域是整个类,而...

    java静态代码块与非静态代码块.doc

    这两个静态代码块是在类加载时自动执行的,它们的执行顺序是按照它们在类中的声明顺序来的。 非静态代码块 非静态代码块是 Java 中的一种特殊的代码块,它是非静态的,意思是说它是属于对象的,而不是属于类的。非...

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

    本文将深度剖析几个常见的Java面试题目,包括方法重写、静态代码块和构造方法的执行顺序。 首先,我们来讨论**方法重写(Override)**。在面向对象编程中,子类可以继承父类的属性和方法,有时需要根据自己的需求对...

    Java的静态代码块、非静态代码块、构造函数

    Java编程语言中,静态代码块、非静态代码块和构造函数是面向对象设计的重要组成部分,它们在类的初始化和对象创建过程中起到关键作用。本文将深入探讨这些概念,以及它们在实际开发中的应用。 首先,我们来理解静态...

    java方块游戏代码

    1. **Java Applet**: 描述中提到的"applet程序编的"意味着这个游戏可能是一个Java小应用程序(Applet),这是一种可以在网页浏览器中运行的Java程序。Applet需要Java插件,但随着现代浏览器逐步淘汰这种技术,现在更...

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

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

    java中的static变量,方法,代码块

    `static`代码块,或称静态代码块,是在类初始化过程中执行的一段代码。不同于普通的代码块,静态代码块在类加载时由JVM自动执行,并且只执行一次。这意味着静态代码块常被用来初始化静态变量或执行类级别的操作。多...

    java代码块测试

    在Java编程语言中,代码块是执行特定任务的语句集合,它们可以是局部的、实例的、静态的,或者用于异常处理。本主题将深入探讨Java中的代码块及其在Struts2框架中的应用。 首先,让我们理解Java的四种主要代码块: ...

    大数据必学Java基础(三十七):代码块讲解

    代码块的执行顺序是指 Java 程序中代码块的执行顺序。它可以分为以下几个步骤: 1. 静态块:静态块最先执行,它的作用范围仅限于类的加载过程中。 2. 构造块:构造块次之,它的作用范围仅限于类的构造过程中。 3....

    java基本程序代码

    4. **方法(Method)**:方法是Java中的函数,封装了特定功能的代码块,可被多次调用。了解如何定义、调用和参数传递是提高代码复用性的关键。 5. **数组**:Java中的数组用于存储同类型的数据集合,可以是一维、二...

    静态代码块

    - 如果父类中有静态代码块,那么在创建子类对象时,父类的静态代码块会先于子类的静态代码块执行。 - 在子类中,如果想要调用父类的构造函数或其他方法,可以使用`super()`关键字。 以上就是关于Java中静态代码块的...

    关于Java中静态代码块的执行浅析

    Java中的静态代码块是一种特殊的代码块,它们是在类加载过程中执行的,而不是在对象创建时执行的。静态代码块的执行是自动的,且只执行一次。在Java中,静态代码块的执行是static关键字的结果。 静态代码块的执行...

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

    下面我们将详细探讨Java中代码块的执行顺序,包括静态属性、非静态属性、静态代码块、非静态代码块以及构造函数。 首先,让我们回顾一下结论: 1. 当创建一个类的实例时,首先会执行类中的静态属性和静态代码块,...

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

    在Java编程语言中,了解静态代码块和构造方法的执行顺序是至关重要的,尤其是在处理类的初始化和对象的创建时。下面将详细解释这些概念及其执行逻辑。 首先,静态代码块(也称为静态初始化器)是由`static`关键字...

    Java 中普通代码块,构造代码块,静态代码块区别及代码示例

    Java编程语言中有三种类型的代码块,它们分别是普通代码块、构造代码块和静态代码块,每种都有其特定的用途和执行顺序。 1. **普通代码块**: 普通代码块(也称为局部代码块)是在方法或者类的成员变量声明之间...

    Java代码块与代码加载顺序原理详解

    Java代码块与代码加载顺序原理详解 Java代码块是Java语言中的一种基本结构单元,用于组织代码,控制变量的生命周期和作用域。本文将详细介绍Java代码块的类型、特点、使用方法和加载顺序原理。 一、代码块的类型 ...

    Java中的Static块与静态方法

    2. **只执行一次**:每个类的静态块在整个程序运行期间只执行一次。 3. **按出现顺序执行**:如果一个类中有多个静态块,它们将按照在源代码中出现的顺序依次执行。 ### 静态方法与静态块的区别与联系 虽然静态...

Global site tag (gtag.js) - Google Analytics