Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例

2018年05月08日 08:12:48 WJN不忘初心 阅读数:34

除了说普通代码块,静态代码块,构造代码块的执行顺序外,还有静态方法,静态变量等,都放在一起的话,这个执行顺序,怎么确定。

我就实际弄个代码,看下执行顺序。

[java] view plain copy
  1. public class Line {
  2. static {
  3. System.out.println("静态代码块执行:loading line");
  4. }
  5. public static String s = getString();
  6. private static String getString() {
  7. System.out.println("给静态变量赋值的静态方法执行:loading line");
  8. return "ss";
  9. }
  10. public static void test() {
  11. System.out.println("普通静态方法执行:loading line");
  12. }
  13. public Line() {
  14. System.out.println("构造方法执行:loading line");
  15. }
  16. {
  17. System.out.println("构造代码块执行");
  18. }
  19. }

然后是main方法

[java] view plain copy
  1. /**
  2. * 代码块执行顺序测试
  3. * <p>
  4. * Created by lxk on 2017/2/21
  5. */
  6. public class CodeBlockTest {
  7. public static void main(String[] args) {
  8. System.out.println("主方法");
  9. {
  10. System.out.println("main方法中最开始的,普通代码块执行");
  11. }
  12. Line line = new Line();
  13. System.out.println("...............");
  14. Line line1 = new Line();
  15. System.out.println("...............");
  16. {
  17. System.out.println("main方法中结尾事的,普通代码块执行");
  18. }
  19. }
  20. }

看运行结果。

针对上面执行结果,对几个概念进行简单的描述。

普通代码块:

在方法或语句中出现的{}就称为普通代码块。
普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”

构造代码块:

直接在类中定义且没有加static关键字的代码块称为{}构造代码块。
构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。
这个构造代码块的执行顺序不会因为方法所在位置而影响,我特意将他放在构造函数之后。

静态代码块:

在java中使用static关键字声明的代码块。
静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。
由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。(我这没作出test)
注意:
1 静态代码块不能存在于任何方法体内。
2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。

这是我在CSDD博客上看到的,面试有遇到过这种问题。如果侵权请联系!

转载于:https://www.cnblogs.com/FanKL/p/10987932.html

Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例相关推荐

  1. java 继承类 变量、静态变量、构造函数执行顺序

    java 继承类 变量.静态变量.构造函数执行顺序 Java代码   class C{ static int prt(int i){ System.out.println(i); return i; ...

  2. java代码块执行顺序_JAVA代码块执行顺序分析测试

    在实际的工作过程中,几乎从没用过JAVA的代码块.不过既然做了这方面的学习与测试,就索性记录下来防止忘记.同一个招式,圣斗士是不会学习第二遍的... 首先,上代码: public class Code ...

  3. Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入

    static 关键字 在类中,用static声明的成员变量为静态成员变量,也称为类变量. 类变量的生命周期和类相同,在整个应用程序执行期间都有效.它有如下特点: 1. 为该类的公用变量,属于类,被该类 ...

  4. java 执行顺序_Java代码执行顺序

    程序中代码执行的顺序非常重要,稍有不慎便会是程序运行出错,那么我将结合实例来分析代码中的执行. 名词解释 首先了解几个名词: 非静态代码块 直接由 { } 包起来的代码,称为非静态代码块 静态代码块 ...

  5. 过滤器、拦截器、AOP、ControllerAdvcie的使用对比、执行顺序及代码教程

    文章目录 前言 过滤器Filter 简介 使用方法 代码实现 测试 拦截器Interceptor 简介 使用方法 代码实现 测试 ControllerAdvice 简介 使用方法 代码实现 测试 AO ...

  6. java先执行static还是构造函数_【Java基础】类的实例化、static、父类构造函数执行顺序...

    重温java基础,以免自己以后犯原则性错误,这是最基本,最基础的东西. 先看结论: 一个类的实例化过程: 1,首先会执行类中static代码块(不管代码块是否在类的开头还是末尾处),如果这个类有父类, ...

  7. C#构造函数、私有构造函数、静态构造函数与构造函数执行顺序

    https://www.cnblogs.com/ArtofDesign/p/3603986.html 默认构造函数,如果没有为类指定任何构造函数,编译器会自动为类创建一个无参构造函数,用以初始化类的字 ...

  8. 静态块、动态块、构造函数、继承函数等的执行顺序

    不涉及继承 静态代码块, 动态代码块 ,构造函数 package demo01; public class Demo02 { public Demo02(){         System.out.p ...

  9. python中and与or的执行顺序-python 代码运行顺序问题?

    Thread.join([timeout]) Wait until the thread terminates. This blocks the calling thread until the th ...

最新文章

  1. 洛谷p1338末日的传说(思维好题,数学)
  2. Oracle SqlLoader使用
  3. 网上预约订餐系统(联网可用)
  4. ESP32黑客帝国数字雨动画,矩阵它来了,ESP32+ST7789V液晶屏Arduino
  5. 小白入门必学——时间复杂度
  6. 硅谷的摇篮-斯坦福大学
  7. 基于Mono.Cecil的静态注入
  8. 十年生死两茫茫,当我们已不再年轻——焦版小李飞刀
  9. 最常见的开源游戏引擎_拔剑-浆糊的传说_新浪博客
  10. 有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
  11. 组合数c(n,m)计算的四种方法
  12. 加入美团2021届北斗计划,用科技定义未来生活
  13. 网易易盾-滑块-fp参数-2022-9-5
  14. html5立体照片墙效果,HTML5特效可以 14种jQuery超酷3D网格照片墙动画特效源码
  15. 微信小程序及微信生态圈
  16. ultraedit删除重复项_UltraEdit技巧总结
  17. log(A/B) = logA -logB
  18. unix/linux文件系统基础知识
  19. ARM硬件接口及总线介绍
  20. 制作集成SATA驱动的xp安装盘

热门文章

  1. 为红米寻找新的方向 卢伟冰向网友征集老人机需求
  2. 原型 / 构造函数 / 实例/原型链
  3. 计算机应用教程第9,计算机应用教程(第8版)第六章
  4. 简洁的c++http协议获取内容(一)
  5. 产品经理之深度学习促进产品之分类(三)
  6. wampserver橙色如何变成绿色_绿色配什么颜色好看 家居绿色配色小技巧-装修攻略...
  7. Java变量的初始化问题探究
  8. 【Flink】Flink Failed to push metrics to PushGateway Connect refuse
  9. 【kafka】Kafka 之 Group 状态变化分析及 Rebalance 过程
  10. 【Flink】Unauthorized request to start container. This token is expired. current time is