首页
学习
活动
专区
工具
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

    延时加载 JS 代码,提高网页加载速度

    如果网页中存在大量的 javascript 代码会极大的影响网页的访问速度,下面就简单介绍一下如何延时加载 js 代码提高速度。...二.将js代码放到网页内容的后面: 这个比较简单了,就不用说了,就是将 js 代码放在网页内容的后面,一把是放在body的最底部,这样也可以先加载内容再去执行 js 代码,也能够提高一定的速度。...JS 广告代码延迟加载或是最后加载加快页面载入 JS 广告代码延迟加载或是最后加载加快页面载入,如果页面中有很多 JS 广告代码,或者其他的 js/' target='_blank' class='u'...使用JS广告代码延迟加载或是最后加载的方法以加快页面载入速度。...('my').src='include/php100.php'; ",3000);//延时3秒 第二,JS广告代码最后加载 在需要插入JS的地方插入以下代码: 程序代码 <SPAN

    7.8K30

    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

    Vue.js中的延迟加载和代码拆分

    顾名思义,延迟加载是一个懒惰地加载应用程序的部分(块)的过程。换句话说 - 只有在我们真正需要它们时加载它们。代码拆分只是将应用程序拆分为多个延迟加载的代码块的一种处理方式。 ?...延迟加载允许我们拆分捆绑包并仅提供所需的部分,这样用户就不会浪费时间下载和解析不会使用的代码。...现在我们应该能够看到实际使用了多少下载的代码。 ? 标记为红色的所有内容都是当前路由上不需要的东西,可以延迟加载。...现在是时候看看我们如何在我们自己的Vue.js应用程序中使用延迟加载。 动态导入 我们可以使用webpack的动态导入,轻松地加载我们应用程序的某些部分。...在DOM中需要渲染组件之前,组件将不会加载。想要加载,只要v-if值更改为true即可。 总结 延迟加载,是使您的Web应用程序更高效并减少js bundle大小的最佳方法之一。

    7.8K10

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

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

    1.2K50

    代码块总结

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

    82340

    Java代码块

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

    90720

    Java中静态代码块和构造代码块

    直接在类中定义且没有加static关键字的代码块称为{}构造代码块。     构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。...静态代码块:     在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。...由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。 注意: 静态代码块不能存在于任何方法体内。 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。...主方法内的变量x=1 2,普通代码块内的变量y=7 */ 构造代码块 /*构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。...静态块用于初始化类,为类的属性初始化。 每个静态代码块只会执行一次。 由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。

    1.2K10
    领券