静态代码块、静态变量、构造方法及构造块执行顺序

静态代码块、静态变量、构造方法及构造块均是在类被加载的时候初始化。

静态块在类被重复调用的时候只会加载一次。

静态代码块和静态变量的执行顺序是按代码先后顺序执行的。

 1 package cnom.test.testUtils;
 2
 3 public class TestStaticLoadSort {
 4
 5     private static String str = "h";
 6
 7     public TestStaticLoadSort() {
 8         System.out.println("构造方法.");
 9     }
10
11     static {
12         str += "i";
13         System.out.println("静态块");
14     }
15
16     {
17         System.out.println("构造块");
18     }
19
20     public static void main(String[] args) {
21         TestStaticLoadSort tss = new TestStaticLoadSort();
22         System.out.println(tss.str);
23         TestStaticLoadSort tss1 = new TestStaticLoadSort();
24     }
25     /**
26      * ===============输出结果=============
27      * 静态块
28      * 构造块
29      * 构造方法.
30      * hi
31      * 构造块
32      * 构造方法.
33      */
34 }

总结执行先后顺序为:静态块/静态变量>构造块>构造方法。

原文地址:https://www.cnblogs.com/itfeng813/p/11577249.html

时间: 2024-10-08 00:24:00

静态代码块、静态变量、构造方法及构造块执行顺序的相关文章

java变量,初始化快,构造函数的执行顺序

转自 http://blog.csdn.net/macheng365/article/details/6403050 —————————————————————————————————————————————————— 对于JAVA中类的初始化是一个很基础的问题,其中的一些问题也是易被学习者所忽略.当在编写代码的时候碰到时,常被这些问题引发的错误,感觉莫名其妙.而且现在许多大公司的面试题,对于这方面的考查也是屡试不爽.不管基于什么原因,我认为,对于java类中的初始化问题,有必要深入的了解.Ja

【JavaScript】JavaScript脚本代码的位置及在页面中的执行顺序

三.如何改变Javascript在页面的执行顺序 利用onload <script type="text/javascript">window.onload = f; function f(){ alert(1); } alert(2);</script>输出值顺序是 2.1. 需要注意的是,如果存在多个winodws.onload的话,只有最后有一个生效,解决这个办法是: window.onload = function(){f();f1();f2();...

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

一个类中执行顺序: 静态变量静态代码块代码块构造方法 子类和父类执行顺序: 父类静态变量父类静态代码块子类静态变量子类静态代码块父类代码块父类构造方法子类代码块子类构造方法 直接看代码,一目了然. public class Test { public static void main(String[] args) { new A(); /* 结果: * A静态变量 A静态代码块 A代码块 A构造方法 * */ new B(); /* * 结果: * A静态变量 A静态代码块 B静态变量 B静态代

Java中静态代码块、构造代码块的区别

来源:https://liuyanzhao.com/5303.html 直接在类中定义且没有加static关键字的代码块称为{}构造代码块. 构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数. 静态代码块:在java中使用static关键字声明的代码块.静态块用于初始化类,为类的属性初始化.每个静态代码块只会执行一次.由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行. 注意:1 静态代码块不能存在于任何方法体内.2 静态代码块不能直

面试趣闻之java 代码块 静态代码块 构造方法 执行顺序

初级程序员总会遇到这样的问题,代码块 静态代码块 构造方法 执行顺序 父类 public class ClassSup { public ClassSup(){ System.out.println("父类构造器"); } static { System.out.println("父类静态代码块"); } { System.out.println("父类代码块"); } public void mathod01(){ System.out.pri

Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)(转)

大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果.这实际上是在考查我们对于继承情况下类的初始化顺序的了解. 我们大家都知道,对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序以此是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: Java代码 p

JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块

JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 this的特点 this就代表本类对象 这在我们的set方法里面是有的 public void setName(String name) { this.name = name; } this代表他所在的函数对属对象的引用 现在我们这里有这么一个需求 //公共的 类 类名 public class H

常用 Java 静态代码分析工具的分析与比较

转载自: http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代

静态代码先于非静态代码

静态代码为什么先于非静态代码 这是因为静态代码是在类加载完毕后执行的,而加载类的顺序是先父类后子类,所以静态代码的执行是先执行父类的,然后执行子类的. 对于非静态变量以及实例初始化块都是在构造函数里的代码执行前执行. 所以静态代码是在类加载后执行,而实例代码是在构造函数执行前执行. 但是当我们显示控制类加载的时候情况有点变化,显示加载可以有关两种方法: 第一种:利用forName方法 当我们查API文档就会发现forName方法有两种形式. 分别如下: public static Class<?