Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例
Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例
除了说普通代码块,静态代码块,构造代码块的执行顺序外,还有静态方法,静态变量等,都放在一起的话,这个执行顺序,怎么确定。
我就实际弄个代码,看下执行顺序。
- public class Line {
- static {
- System.out.println("静态代码块执行:loading line");
- }
- public static String s = getString();
- private static String getString() {
- System.out.println("给静态变量赋值的静态方法执行:loading line");
- return "ss";
- }
- public static void test() {
- System.out.println("普通静态方法执行:loading line");
- }
- public Line() {
- System.out.println("构造方法执行:loading line");
- }
- {
- System.out.println("构造代码块执行");
- }
- }
然后是main方法
- /**
- * 代码块执行顺序测试
- * <p>
- * Created by lxk on 2017/2/21
- */
- public class CodeBlockTest {
- public static void main(String[] args) {
- System.out.println("主方法");
- {
- System.out.println("main方法中最开始的,普通代码块执行");
- }
- Line line = new Line();
- System.out.println("...............");
- Line line1 = new Line();
- System.out.println("...............");
- {
- System.out.println("main方法中结尾事的,普通代码块执行");
- }
- }
- }
看运行结果。
针对上面执行结果,对几个概念进行简单的描述。
普通代码块:
在方法或语句中出现的{}就称为普通代码块。
普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”
构造代码块:
直接在类中定义且没有加static关键字的代码块称为{}构造代码块。
构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。
这个构造代码块的执行顺序不会因为方法所在位置而影响,我特意将他放在构造函数之后。
静态代码块:
在java中使用static关键字声明的代码块。
静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。
由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。(我这没作出test)
注意:
1 静态代码块不能存在于任何方法体内。
2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。
转载于:https://www.cnblogs.com/FanKL/p/10987932.html
Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例相关推荐
- java 继承类 变量、静态变量、构造函数执行顺序
java 继承类 变量.静态变量.构造函数执行顺序 Java代码 class C{ static int prt(int i){ System.out.println(i); return i; ...
- java代码块执行顺序_JAVA代码块执行顺序分析测试
在实际的工作过程中,几乎从没用过JAVA的代码块.不过既然做了这方面的学习与测试,就索性记录下来防止忘记.同一个招式,圣斗士是不会学习第二遍的... 首先,上代码: public class Code ...
- Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入
static 关键字 在类中,用static声明的成员变量为静态成员变量,也称为类变量. 类变量的生命周期和类相同,在整个应用程序执行期间都有效.它有如下特点: 1. 为该类的公用变量,属于类,被该类 ...
- java 执行顺序_Java代码执行顺序
程序中代码执行的顺序非常重要,稍有不慎便会是程序运行出错,那么我将结合实例来分析代码中的执行. 名词解释 首先了解几个名词: 非静态代码块 直接由 { } 包起来的代码,称为非静态代码块 静态代码块 ...
- 过滤器、拦截器、AOP、ControllerAdvcie的使用对比、执行顺序及代码教程
文章目录 前言 过滤器Filter 简介 使用方法 代码实现 测试 拦截器Interceptor 简介 使用方法 代码实现 测试 ControllerAdvice 简介 使用方法 代码实现 测试 AO ...
- java先执行static还是构造函数_【Java基础】类的实例化、static、父类构造函数执行顺序...
重温java基础,以免自己以后犯原则性错误,这是最基本,最基础的东西. 先看结论: 一个类的实例化过程: 1,首先会执行类中static代码块(不管代码块是否在类的开头还是末尾处),如果这个类有父类, ...
- C#构造函数、私有构造函数、静态构造函数与构造函数执行顺序
https://www.cnblogs.com/ArtofDesign/p/3603986.html 默认构造函数,如果没有为类指定任何构造函数,编译器会自动为类创建一个无参构造函数,用以初始化类的字 ...
- 静态块、动态块、构造函数、继承函数等的执行顺序
不涉及继承 静态代码块, 动态代码块 ,构造函数 package demo01; public class Demo02 { public Demo02(){ System.out.p ...
- python中and与or的执行顺序-python 代码运行顺序问题?
Thread.join([timeout]) Wait until the thread terminates. This blocks the calling thread until the th ...
最新文章
- 洛谷p1338末日的传说(思维好题,数学)
- Oracle SqlLoader使用
- 网上预约订餐系统(联网可用)
- ESP32黑客帝国数字雨动画,矩阵它来了,ESP32+ST7789V液晶屏Arduino
- 小白入门必学——时间复杂度
- 硅谷的摇篮-斯坦福大学
- 基于Mono.Cecil的静态注入
- 十年生死两茫茫,当我们已不再年轻——焦版小李飞刀
- 最常见的开源游戏引擎_拔剑-浆糊的传说_新浪博客
- 有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
- 组合数c(n,m)计算的四种方法
- 加入美团2021届北斗计划,用科技定义未来生活
- 网易易盾-滑块-fp参数-2022-9-5
- html5立体照片墙效果,HTML5特效可以 14种jQuery超酷3D网格照片墙动画特效源码
- 微信小程序及微信生态圈
- ultraedit删除重复项_UltraEdit技巧总结
- log(A/B) = logA -logB
- unix/linux文件系统基础知识
- ARM硬件接口及总线介绍
- 制作集成SATA驱动的xp安装盘
热门文章
- 为红米寻找新的方向 卢伟冰向网友征集老人机需求
- 原型 / 构造函数 / 实例/原型链
- 计算机应用教程第9,计算机应用教程(第8版)第六章
- 简洁的c++http协议获取内容(一)
- 产品经理之深度学习促进产品之分类(三)
- wampserver橙色如何变成绿色_绿色配什么颜色好看 家居绿色配色小技巧-装修攻略...
- Java变量的初始化问题探究
- 【Flink】Flink Failed to push metrics to PushGateway Connect refuse
- 【kafka】Kafka 之 Group 状态变化分析及 Rebalance 过程
- 【Flink】Unauthorized request to start container. This token is expired. current time is