1.普通代码块:

局部代码块,在方法中出现;限定变量生命周期,及早释放,提高内存利用率。

2.构造代码块:

在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行。

3.静态代码块:

在类中方法外出现,并加上 static 修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。

4.同步代码块:

使用synchronized(){}包裹起来的代码块,在多线程环境下,对共享数据的读写操作是需要互斥进行的,否则会导致数据的不一致性。同步代码块需要写在方法中。

例子1:

classStudent {static{

System.out.println("Student 静态代码块");

}

{

System.out.println("Student 构造代码块");

}publicStudent() {

System.out.println("Student 构造方法");

}

}

classDemo2_Student {static{

System.out.println("Demo2_Student 静态代码块");

}public static voidmain(String[] args) {

System.out.println("我是 main 方法");

Student s1= newStudent();

Student s2= newStudent();

}

}

执行流程:首先需要加载类 Demo2_Student,在加载的时候就执行静态代码块。然后执行主方法。创建 student 对象需要先加载类,加载类时又执行了静态代码块。然后在 new 对象之前,要执行构造代码块,然后才执行狗仔方法。

例子2:

classTest2_Extends {public static voidmain(String[] args) {

Zi z= newZi();

}

}

classFu {static{

System.out.println("静态代码块 Fu");

}

{

System.out.println("构造代码块 Fu");

}publicFu() {

System.out.println("构造方法 Fu");

}

}

class Zi extendsFu {static{

System.out.println("静态代码块 Zi");

}

{

System.out.println("构造代码块 Zi");

}publicZi() {

System.out.println("构造方法 Zi");

}

}

执行流程:

1,jvm 调用了 main 方法,main 进栈

2,遇到 Zi z = new Zi();会先将 Fu.class 和 Zi.class 分别加载进内存,再创建对象,当 Fu.class加载进内存父类的静态代码块会随着 Fu.class 一起加载,当 Zi.class 加载进内存,子类的静态代码块会随着 Zi.class 一起加载。第一个输出静态代码块 Fu,第二个输出静态代码块 Zi

3,走到 Zi 类的构造方法,因为 java 中是分层初始化的,先初始化父类,再初始化子类,所以先走的父类构造,但是在执行父类构造时,发现父类有构造代码块,构造代码块是优先于构造方法执行的所以第三个输出构造代码块 Fu,第四个输出构造方法 Fu

4,Fu 类初始化结束,子类初始化,第五个输出的是构造代码块 Zi,构造方法 Zi

java代码块是什么_Java代码块相关推荐

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

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

  2. java每一个小时同步_Java同步块(synchronized block)使用详解

    Java 同步块(synchronized block)用来标记方法或者代码块是同步的.Java同步块用来避免竞争.本文介绍以下内容: Java同步关键字(synchronzied) 实例方法同步 静 ...

  3. java代码解决的问题_java代码规范问题及解决方案

    java代码规范问题总结 1.没有总是检查ResultSet结果对象 解决方案是通过if判断ResultSet结果是有有元素,常用条件是ResultSet结果的next,previous,first, ...

  4. java ip加密如何访问_java代码中如何实现http访问

    作者:释怀Na 出自:CSDN 原文:blog.csdn.net/qq_35906921/article/details/98076258 java代码中如何实现http访问 大概的实现就是 请求ht ...

  5. java 中组合与复用_Java 代码复用(组合与继承)

    java中的类都是围绕着类进行的.可以通过创建新类来复用代码,而不必从头编写.可以使用别人已经开发并调试好的类.此方法使用的窍门在于使用类而不破坏现有的程序代码.达到这一目的的方法有两种: 第一种方法 ...

  6. java css网页布局实例_java代码例子

    JAVA 类名.方法名(这里面写的是什么)能不能写个代要是类名直接调用的方法,那这个方法就是静态的(static)方法,是不用new出新对象实例就可以直接调用的方法.看下面例子: class A{ p ...

  7. java如何添加自定义的图片_java代码将图片加上自定义水印 -4

    java代码将图片加上自定义水印,然后生成了新的图片 import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; ...

  8. 在线运行java代码并得到结果_Java代码是如何运行的?

    作为一名Java程序员,你应该知道Java有很多种运行方式.比如说可以在开发工具中运行,可以双击jar包运行,可以在网页端运行.当然这些运行方式都离不开JRE「也就是java运行时环境」. 实际上, ...

  9. java下载文件到服务器_java代码实现上传文件到文档服务器、下载文档服务器文件...

    需要完成下载->修改->上传这三个步骤 平台有提供对应的api吗? /** 首先我们来理解下关于文档的api 文档相关api都在这2个package下面 package :com.just ...

最新文章

  1. python使用imbalanced-learn的OneSidedSelection方法进行下采样处理数据不平衡问题
  2. MySQL的并发控制与加锁分析
  3. 如何设计一门语言(二)——什么是坑(b)
  4. emqtt 试用(二)验证 emq 和 mosquito 的共享订阅
  5. Java 获取当前项目的类路径
  6. GPU Gems1 - 1 用物理模型进行高效的水模拟(Effective Water Simulation from Physical Models)
  7. 华为荣耀20和x10比较_荣耀X10和华为畅享20plus,到底哪个更值得入手?
  8. python中写入csv文件的方法_Python写入CSV文件的方法
  9. R7-6 A-B (20 分)
  10. oracle sql取查询结果第一条,SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...
  11. python读mat文件_我用Python对咪蒙的1013篇历史文章做了一次深度的数据分析...
  12. 关于团队项目的一些思考和理解
  13. 拓端tecdat|时间序列建模三部曲
  14. 什么软件测试情侣头像,即刻情侣头像配对器
  15. 谷歌“Adobe Flash Player已被屏蔽”的解决办法
  16. python常用语音识别库_干货收藏 | Python语音识别终极指南
  17. C++中的仿函数(functors)和仿函数适配器(adapter function)
  18. Unity将相机内容输出成图片
  19. 跨考计算机要选择408吗,408难度比较大,对于跨考更是如此,应从以下三个方面做准备...
  20. 我不恨你,我只恨我们有缘无分

热门文章

  1. Open3d之点云顶点法线估计
  2. arcgis重心迁移分析_【停课不停研ArcGIS制图微教程系列】土地利用分布图的制作——以温州市为例...
  3. JQuery筛选器全系列介绍
  4. myeclipse汉化及其相关配置设置(转)
  5. Keepalived-在没有之前配置的Nginx高可用(不建议采纳)
  6. Windows用户程序报错或软件无法删除或者卡顿,解决办法
  7. mysql 恢复同步_常见MySQL同步错误恢复方法
  8. Learnopengl
  9. 【李宏毅2020 ML/DL】P110-111 Policy Gradient Proximal Policy Optimization
  10. 【Computer Organization笔记01】计算机组成原理课程要求、计算机的层次结构、计算机的发展历史