`

java基础-java类代码块执行顺序

 
阅读更多

这里的代码块是指独立于方法体之外的用{}括起来的代码块,包括静态代码块、非静态代码块,例如:

class  A{

  static  int  x=0;//静态属性

  int  y=1;  //非静态属性

  static{

       //静态代码块

  }

  {

       //非静态代码块

  }

  public A(){

      //构造方法

  }

  public static void main(String[]  args){

        A  class1;  //加载类

        A=new  A() ; //实例化,创建对象

  }  

}

执行顺序可以概括为:

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

2. 单个类的初始化顺序如下:
    为静态属性分配内存并赋值->执行静态代码块->为非静态属性分配内存并赋值->执行非静态代码块->构造函数.

3. 有继承关系的类的初始化顺序如下:
    父静属->父静块->子静属->子静块->父非静属->父非静块->父构造->子非静属->子非静块->子构造.
1,属性执行顺序优于代码块
2,静态优于非静态
3,父类优于子类


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zklth/archive/2010/07/16/5739355.aspx

分享到:
评论

相关推荐

    Java基础之代码块.docx

    Java基础之代码块 Java 中的代码块是指用一对花括号 {} 包围的代码区域,这些代码块可以出现在不同的位置,执行时机也不同。下面对代码块的种类、执行时机和运行顺序进行详细的解释。 普通语句块 普通语句块是指...

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

    在Java编程语言中,了解代码块的执行顺序对于编写高效且无错的代码至关重要。这里我们将深入探讨Java中的普通代码块(实例初始化块)和静态代码块的执行顺序,并通过实例来阐述这一概念。 首先,我们需要明白两种...

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

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

    JAVA线程高级-线程按序交替执行

    - Java的`Thread`类提供了设置线程优先级的方法,如`setPriority()`,但优先级并不保证绝对的执行顺序,只能影响调度概率,实际执行顺序依赖于JVM和操作系统。 7. **`Thread.yield()`**: - `Thread.yield()`方法...

    01大数据面试复习----Java基础---集合类、多线程、JVM.zip

    - **同步机制**:`synchronized`关键字用于同步方法或代码块,防止数据竞争。 - **死锁**:多个线程互相等待对方释放资源导致的僵局。 - **线程安全**:在多线程环境下,保证数据一致性。 - **线程状态**:新建、...

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

    在 Java 语言中,代码块和静态代码块的加载顺序是严格按照类的加载顺序执行的。具体来说,类的加载顺序如下: 1. 父类静态代码块 2. 子类静态代码块 3. 父类实例代码块 4. 子类实例代码块 在上面的实例代码中,...

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

    今天,我们将对 Java 基础知识点进行详解,主要讲解代码块的概念、分类和执行顺序。 代码块是 Java 语言中的一种基本结构单元,它是 Java 程序的基本组成部分。代码块可以分为五种:普通块、构造块、静态块、同步块...

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

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

    Java基础1-10章课堂代码(参考视频1.1-10.12).zip

    本压缩包"Java基础1-10章课堂代码(参考视频1.1-10.12).zip"包含了从基础到进阶的Java编程知识,对应于一系列的教学视频,从1.1到10.12,旨在帮助学习者逐步掌握Java编程的核心概念和技术。 首先,我们从第一章的...

    java面试题-类的初始化顺序.doc

    此外,静态初始化块只在类加载时执行一次,而初始化块(也称为实例初始化块)会在每次创建类的新实例时执行。这意味着静态成员和静态初始化块对于所有类的实例都是共享的,而实例成员和实例初始化块则是每个对象独有...

    java--基础程序知识.rar

    这份“java--基础程序知识.rar”压缩包显然包含了关于Java基础知识的学习资料,旨在帮助初学者或有经验的开发者巩固和深化Java编程技能。下面将详细讨论Java的基础知识,包括其语法、核心概念以及常见应用。 1. **...

    Java基础-个人总结-超详细清楚-用于面试-针对无基础或有基础回忆.docx

    了解这些基础概念有助于理解和编写Java代码,同时也为面试做好准备。在实际开发中,根据具体需求选择合适的数据结构和类,能够有效提高代码的性能和可维护性。对于多线程环境,可以考虑使用`ConcurrentHashMap`这类...

    java基础--11.多线程-1

    在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应性。本节我们将深入探讨Java中的多线程概念,包括其重要性、创建方法以及相关机制。 一、多线程的重要性 1....

    Java面向对象(高级)- 类的成员之四:代码块

    非静态代码块在构造器之前执行,如果类中有多个非静态代码块,也会按源码顺序依次执行。 例如,以下代码展示了不同类型的代码块: ```java class Person { String name; int age; // 静态代码块 static { ...

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

     1 静态变量,静态代码块(类加载时执行,类不加载不执行)  2 实例变量,实例代码块(创建对象时才执行,不创建对象不执行)  3 构造函数,(创建对象时执行完2后再执行构造函数,不管构造函数是public还是private...

    大学课程讲义-Java基础-多线程.pptx

    synchronized关键字可以修饰方法或代码块,以实现线程的同步和互斥。volatile关键字可以修饰变量,以确保变量的最新值对所有线程可见。 五、线程的优先级 在Java中,可以使用setPriority方法来设置线程的优先级。...

    Java类执行顺序详解+实例(阿里面试题)+详细讲解+流程图

    Java类的执行顺序是编程过程中一个非常重要的概念,特别是在深入理解和优化代码性能时。本文将详细探讨Java类的加载、初始化、执行等步骤,并通过实例分析阿里面试中可能涉及的相关问题,结合流程图帮助理解这一过程...

    静态代码块

    这种执行顺序体现了Java中静态代码块和实例代码块的执行规则: - 类的静态代码块会在任何实例被创建之前执行,并且只执行一次。 - 子类继承父类时,父类的静态代码块会在子类的静态代码块之前执行。 - 每个类的静态...

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

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

    342.340.JAVA基础教程_面向对象(下)-复习:代码块和final(342).rar

    在Java中,代码块是包含一组语句的结构,它们按顺序执行。主要有以下两种类型: 1. **实例初始化块**:当创建类的新实例时,这些代码块会先于构造函数执行。它们可以用于初始化对象的状态,尤其是当初始化逻辑较为...

Global site tag (gtag.js) - Google Analytics