首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

静态代码块、构造代码块以及构造函数的加载顺序

静态代码块:用staitc声明,jvm加载类时执行,仅执行一次。 构造代码块:类中直接用{}定义,每一次创建对象时执行。...加载的时候,将静态成员变量(类变量),构造代码块,静态代码块以及静态方法加载到方法区的静态部分,非静态方法以及构造方法加载到方法区的非静态部分。...二、执行代码块 类文件加载好以后,开始执行静态代码块,然后在堆内存中开辟空间,分配内存地址。...作用分析 静态代码块用于给类初始化,类加载的时候就会被执行; 构造代码块用于给对应对象初始化,只要创建对象就会被执行,而且执行的顺序优先于构造函数; 构造函数用于给对应对象初始化,只要创建对象,就会选择相应的构造函数进行初始化..."是在是在执行完静态代码块以后然后才输出的,这就证明静态代码块是不需要创建对象就可以执行的,只要加载完类文件就可以执行,而构造代码块以及构造方法是在执行创建对象的时候才进行初始化的。

73320

static静态代码块加载和执行

静态代码块,非静态代码块,无参构造,有参构造,这些代码片段分别在什么时候加载执行?...static { System.out.println("son的静态代码块"); } { System.out.println("son的非静态代码块...son的静态代码块 father的非静态代码块 father的构造方法 son的非静态代码块 son的构造方法 创建son对象后 4.如果父类没有无参构造,只有有参构造 这种情况,子类需要在构造方法中显示的调用父类的有参构造...son对象前 father的静态代码块 son的静态代码块 father的非静态代码块 father的带参构造方法 son的非静态代码块 son的构造方法 创建son对象后 5.如果父类没有无参构造,也没有有参构造...6.总结 总的来说,按照如下的大顺序调用: 父类静态代码块 子类静态代码块 父类非静态代码块 父类构造函数 子类非静态代码块 子类构造函数

58320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java基础6:代码块与代码加载顺序

    本文主要介绍了三种代码块的特性和使用方法。...代码块:用{}包围的代码 java中的代码块按其位置划分为四种: 局部代码块 位置:局部位置(方法内部) 作用:限定变量的生命周期,尽早释放,节约内存 调用:调用其所在的方法时执行 public class...//使用局部代码块可以避免这样的情况发生。...} } 静态代码块 位置:类成员位置,用static修饰的代码块 作用:对类进行一些初始化 只加载一次,当new多个对象时,只有第一次会调用静态代码块,因为,静态代码块...C(); C c2 = new C(); //结果,静态代码块只会调用一次,类的所有对象共享该代码块 //一般用于类的全局信息初始化 //静态代码块调用 //代码块调用

    49300

    Java中类的静态代码块、构造代码块、构造方法、普通代码块

    前言 Java中静态代码块、构造代码块、构造方法、普通代码块的执行顺序是一个比较常见的笔试题,合理利用其执行顺序也能方便实现项目中的某些功能需求 。...System.out.println("静态代码块"); } } b.执行时机 静态代码块在类加载的时候执行,并且仅执行一次,如果一个类中有多个静态代码块,将按照书写顺序执行。...c.静态代码块的作用 一般情况下,如果有些代码需要在项目启动的时候就执行,这时候就需要静态代码块。比如一个项目启动需要加载的很多配置文件等资源,就可以都放入静态代码块中。...普通代码块 普通代码块和构造代码块的区别是,构造代码块是在类中定义的,而普通代码块是在方法体中定义的。且普通代码块的执行顺序和书写顺序一致。...,父类的构造代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有构造代码块,如果有就执行子类的构造代码块。

    3.6K10

    普通代码块 静态代码块 构造代码块......傻傻分不清

    代码块的定义 在Java中,使用{ }括起来的代码被称为代码块。 代码块的分类 根据其位置和声明方式不同: ?...代码块的作用 认识了这么多代码块,你是不是也和我一样在好奇它们的适用场景都是什么那?...因此就有了局部代码块 构造代码块 作用在类的定义Body中,作用是给类的部分字段统一初始化: public class Apple { private String size; //构造代码块...也就是说,构造代码块中定义的是不同对象共性的初始化内容。所以理所当然的,构造代码块在构造函数之前执行。...同步代码块 我们把有synchronized修饰符修饰的语句块,称为同步代码块,主要用于解决多线程下的安全问题 synchronized(Object o ){} 现在,你明白它们的作用和使用场景了吧

    95920

    关于java中普通代码块、构造代码块与静态代码块

    常用于对类的初始化,每个静态代码块只会执行一次(类在内存中加载时执行,类在内存中加载后类已经存在)由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。...如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行。 ps:1 静态代码块不能存在于任何方法体内。...2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。 构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。...();//第二次类加载时静态代码块不执行 //new A(); { System.out.println("这里是普通代码块B"); } } static{ System.out.println...1"); } { System.out.println("这里是A中的普通代码块2"); } } 执行结果: 这里是静态代码块 这里是普通代码块A 这里是A中的普静态代码块1 这里是A中的普通代码块

    1.4K30

    Java中静态代码块、构造代码块、构造函数、普通代码块

    位置:位于类内,与方法同层次 public class Test{ static{ //Code... } }  静态代码块会随着类的加载而执行,而且只执行一次,并且优先于各种代码块以及构造函数...比如一个项目启动需要加载的很多配置文件等资源,我们就可以都放入静态代码块中。...构造代码块->构造函数->普通代码块 注意事项: 普通代码块可以嵌入其余任何一个代码块中,且前三代码块内部代码都是顺序执行的; main方法晚于静态代码块执行,但是main内部的方法和其余三个代码块是顺序执行的...子类的静态方法->父类的构造代码块->父类的构造函数->子类的构造代码块->子类的构造函数 相关原理以及解释: 因为static修饰的代码在类加载的时候就进行执行,而类加载是先于对象创建的,所以子类和父类的静态方法要首先执行...又因为保护继承成立,我们无论是类加载,还是对象的创建,都是父类先行的,所以静态方法内部执行顺序是父类先于子类的。即:父类的静态方法->子类的静态方法。

    1.6K20

    Java中静态代码块、构造代码块、构造函数、普通代码块

    ("静态代码块"); } }   ②、执行时机   静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。...比如一个项目启动需要加载的很多配置文件等资源,我们就可以都放入静态代码块中。   ④、静态代码块不能存在任何方法体中   这个应该很好理解,首先我们要明确静态代码块是在类加载的时候就要运行了。...我们分情况讨论:   对于普通方法,由于普通方法是通过加载类,然后new出实例化对象,通过对象才能运行这个方法,而静态代码块只需要加载类之后就能运行了。   ...对于静态方法,在类加载的时候,静态方法也已经加载了,但是我们必须要通过类名或者对象名才能访问,也就是说相比于静态代码块,静态代码块是主动运行的,而静态方法是被动运行的。   ...不管是哪种方法,我们需要明确静态代码块的存在在类加载的时候就自动运行了,而放在不管是普通方法还是静态方法中,都是不能自动运行的。

    1.7K20

    Java——代码块(普通块、构造块、静态块)

    代码块在实际开发中很少见,只需要了解即可,实际开发中也不需要使用它。...代码编写中,使用{}声明的程序块就属于代码块,而根据其出现的位置,及声明关键字的不同,分为四种:普通代码块、构造块、静态块、同步代码块(多线程中涉及) 1、普通代码块 在方法中使用{}定义起来的一段代码...,利用普通代码块可以实现局部代码的拆分(实际基本用不上)。...将普通代码块中提取到类中使用,就形成了构造代码块。...3、静态代码块 如果代码块中使用了static关键字定义,则该代码块为静态代码块: 在非主类中定义的; 在主类中定义的; 【举例】:非主类中定义的静态块 protected void onCreate

    2.3K10

    HTML的行元素和块元素

    行元素:整行排列,不能改变大小(宽度和高度),宽度默认文字宽度,当行元素排列过多时( 超过浏览器的宽度时自动强制换行 )。 块元素:一个块元素独占一行,宽度默认浏览器的宽度,可以改变宽度和高度。...行内块元素:属于行元素,但又有块元素的属性,横行排列但又可以设置宽度和高度。...换行 引用进行定义 定义计算机代码文本 定义一个定义项目 定义为强调的内容 斜体文本效果 向网页中嵌入一幅图像 输入框 ...定义无序列表 标签定义段落 定义预格式化的文本 标签定义 HTML 表格 标签表格主体(正文) 表格中的标准单元格 定义表格的页脚...原文地址《HTML的行元素和块元素》

    3.3K20

    HTML加载顺序

    > 它有如下几种资源: 3个外部js文件,1个inline js代码 1个外部css文件, 1个inline css代码 1个image文件,及1个js请求的image 总共是6个http request...基于相关的调研, 我的理解为, 对于一个URI请求, 浏览器会按照下面的请求和执行顺序进行: 一个线程对DOM进行下载(也就是html, 而不去管html中的外部资源) 另外一个线程会开始分析已经下载的...然后我们看执行顺序(js的执行, css的应用等): 只要浏览器"看到了"了js代码,它就会执行 浏览器是从下到下,一行一行地执行 如果js代码位于一个函数或者对象中,则只有当函数或者对象被调用时才会执行...而所谓的direct code(不处于函数或者对象中的代码),则会从上到下顺序执行 当css文件下载完成时, 相应的样式也会应用到DOM上 onload或者jquery的$(document).ready...: 首先下载html 从上到下依次下载外部文件(js,css,img) 各个资源的下载顺序是并行的 你可能会奇怪如果js可以并行下载,那么可能位于DOM下面的代码会先执行, 首先可以肯定的是 即使下面的

    1.9K30

    静态代码块和非静态代码块区别

    静态代码块在第一次创建对象的时候执行一次,之后再也不执行。 非静态代码块每创建一次对象就执行一次。...("静态代码块"); } { System.out.println("非静态代码块"); } } public class TestStatic{ public...非静态代码块 构造代码块 ==========分隔符================ 非静态代码块 构造代码块 当调用一个类里面的静态方法的时候,静态代码块也会执行 例子 class...("测试静态代码块会不会执行"); } static { System.out.println("静态代码块"); } { System.out.println...Cat.f(); } } 执行结果 静态代码块 测试静态代码块会不会执行 注意程序的唯一入口main方法也是静态方法 它同样也遵循静态方法的规则,所以它由系统在创建对象之前就调用.

    1.2K50

    java构造方法,构造代码块,静态代码块的执行顺序

    构造方法,构造代码块,静态代码块的执行顺序静态代码块:用static声明,jvm加载类时执行,仅执行一次类中直接用{}定义,每次创建对象时执行 同级别的变量(static和普通变量)的执行顺序由代码执行顺序决定...;}对象一旦创建就会调用与之相对应的构造方法不创建对象就不会调用构造方法构造函数的作用是给对象初始化对象创建一次,构造函数只调用一次,而普通方法可以被调用很多次构造代码块 代码解读复制代码{ System.out.println...;}给对象进行初始化.对象一创建就会执行构造代码块,而且先于构造方法执行.构造代码块每一次创建对象都会执行,但是创建对象时调用不通的构造方法会得到不同的对象,也就是说构造代码块用于初始化对象通用的属性或者功能....静态代码块 代码解读复制代码static { System.out.println("静态代码块。。。")...;}由jvm加载类时执行,而且只执行一次.静态代码块是给类进行初始化,构造代码块是给对象进行初始化静态代码块中的变量属于局部变量

    4400

    代码块总结

    一般来说代码块是不能单独运行的,它必须要有运行主体。在Java中代码块主要分为四种: 一、普通代码块 普通代码块是我们用得最多的也是最普遍的,它就是在方法名后面用{}括起来的代码段。...static,静态代码块就是用static修饰的用{}括起来的代码段,它的主要目的就是对静态属性进行初始化。...四、构造代码块 在类中直接定义没有任何修饰符、前缀、后缀的代码块即为构造代码块。...构造代码会在构造函数之前执行。 上面两个常用场景都充分利用构造代码块的特性,能够很好的解决在实例化对象时构造函数比较难解决的问题,利用构造代码不仅可以减少代码量,同时也是程序的 可读性增强了。...静态代码块,它是随着类的加载而被执行,只要类被加载了就会执行,而且只会加载一次,主要用于给类进行初始化。 2.

    82340

    Java代码块

    代码块 如果成员变量想要初始化的值不是一个硬编码的常量值,而是需要通过复杂的计算或读取文件、或读取运行环境信息等方式才能获取的一些值,该怎么办呢?此时,可以考虑代码块(或初始化块)。...代码块(或初始化块)的作用: 对Java类或对象进行初始化 代码块(或初始化块)的分类: 一个类中代码块若有修饰符,则只能被static修饰,称为静态代码块(static block) 没有使用static...修饰的,为非静态代码块。...可以对类的属性、类的声明进行初始化操作。 代码块的执行优先于构造器,因而可以在代码块中进行初始化操作,在构造器中调用。...若有多个代码块,按声明顺序执行 不同点: 静态代码块: 静态代码块随着类的加载而加载,且只执行一次。 静态代码块的执行要先于非静态代码块。 不可以对非静态的属性初始化。

    90720
    领券