所谓代码块,就是用大括号{}将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法。一般来说,代码块是不能单独运行的,它必须有运行主体。在Java中代码块主要分为四种:普通代码块、静态代码块、同步代码块、构造代码块。

一、普通代码块:

普通代码块就是类中方法的方法体;普通代码块是不能够单独存在的,他必须紧跟在方法名后面,同时也必须使用方法名调用它。

public class Test {public void test(){System.out.println("普通代码块");}
}

二、静态代码块:

静态代码块就是用static修饰的用{}括起来的代码段,他的主要目的就是对静态属性进行初始化。静态代码块在第一次加载此类的时候被执行,并且只会执行一次,静态代码块优先优先于构造代码块执行。

public class Test {static{System.out.println("静态代码块");}
}

三、同步代码块:

同步代码块,就是使用synchronized关键字修饰的用{}括起来的代码片段,他表示同一时间只能有一个线程进入到该方法块中,是一种多线程保护机制。在多线程环境下,对共享数据进行读写操作是需要互斥进行的,否则会导致数据的不一致性,常见的是synchronized用来修饰方法,其语义是任何线程进入synchronized需要先取得对象锁,如果对象锁被占用了,则阻塞等待。synchronized实现了互斥访问共享资源,但synchronized也是有代价的,会造成系统性能的降低。

public class Test {synchronized(obj){ System.out.println("同步代码块");}
}

四、构造代码块:

构造代码块就是用{}括起来的代码片段,构造代码块会在创建对象时被调用,每次创建对象时会被调用,并且优先于类构造函数执行。构造代码块中定义的变量是局部变量。

new一个对象的时候总是先执行构造代码,在执行构造函数。但是有一点需要注意的是,构造代码块不是在构造函数之前运行的,它是依托构造函数执行的。正式由于构造代码块有这几个特性,所以它常用语如下场景:

1、初始化实例变量:

如果一个类中存在若干个构造函数,这些构造函数都需要对实例变量进行初始化,如果我们直接在构造函数中实例化,必定会产生很多重复代码,繁琐和可读性差。这时,我们可以充分利用构造代码块来实现,这是利用编译器会将构造代码块添加到每个构造函数中的特性。

2、初始化实例环境:

一个对象必须在适当的场景下才能存在,如果没有适当的场景,则就需要在创建对象时创建此场景,我们可以利用构造代码块来创建此场景,尤其是该场景的创建过程较为复杂的时候。

上面两个常用场景都充分利用构造代码块的特性,能够很好的解决在实例化对象时构造函数比较难解决的问题,利用构造代码不仅可以减少代码量,同时也是程序的可读性增强了。特别是当一个对象的创建过程比较复杂,需要实现一些复杂逻辑,这个时候如果在构造函数中实现逻辑,这是不推荐的,因为我们提倡构造函数要尽可能的简单易懂,所以我们可以使用构造代码封装这些逻辑实现部分。

参考博客:

https://blog.csdn.net/zhangzeyuaaa/article/details/16907921

https://blog.csdn.net/chenssy/article/details/14486833

Java基础篇:四种代码块详解相关推荐

  1. java 代码块_详解java中的四种代码块

    在java中用{}括起来的称为代码块,代码块可分为以下四种: 一.简介 1.普通代码块: 类中方法的方法体 2.构造代码块: 构造块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行. ...

  2. java中的四种代码块

    原文链接: java中的四种代码块_Munt的博客-CSDN博客_java中代码块 在java中用{}括起来的称为代码块,代码块可分为以下四种: 一.简介 1.普通代码块: 类中方法的方法体 2.构造 ...

  3. java中你知道这四种代码块吗?

    大家好,我是雄雄,今天给大家分享的是:java中构造代码块的用法. 什么叫代码块?代码块将多行代码封装到一个{}中,形成一个独立的代码区,这就够成了代码块,一般常见的代码块是这样的: Java中,代码 ...

  4. java中你知道的这四种代码块吗?

    点击上方蓝字关注我们 大家好,我是雄雄,今天给大家分享的是:java中的四种代码块 什么叫代码块? 代码块就是将多行代码封装到一个"{}"中,形成一个独立的代码区,这就构成了代码块 ...

  5. 夯实Java基础(八)——代码块

    在Java中代码块指的是使用"{}"括起来的代码称为代码块.代码块一共分为4种:局部代码块,静态代码块,同步代码块,构造代码块. 1.局部代码块 局部代码块就是定义在方法体内部的代 ...

  6. Java 代码块详解

    文章目录 Java 代码块详解 基本介绍 基本语法 代码块示例 代码块使用细节 Java 代码块详解 基本介绍 代码块又称 初始化块, 是类的一部分,属于类中的成员,类似于方法,将逻辑语句封装在方法体 ...

  7. Java基础13:反射与注解详解

    Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...

  8. mvc ajax提交html标签,Mvc提交表单的四种方法全程详解

    Mvc提交表单的四种方法全程详解 2019-01-05 编程之家 https://www.jb51.cc 编程之家收集整理的这篇文章主要介绍了Mvc提交表单的四种方法全程详解,编程之家小编觉得挺不错的 ...

  9. 四种形态图解_中纪委”四种形态“指标体系详解

    中纪委"四种形态"指标体系详解 中纪委自提出"四种形态"以来,官方.民间一直对"四种 形态"各包含什么内容, 在具体实践中如何应用, 存在较 ...

最新文章

  1. python 继承和多态
  2. MyBatis执行过程显示SQL语句的log4j配置
  3. NXP I.MX6ULL 交叉编译工具链下载地址?
  4. 最简单的卸载vrv方法_低端赤道仪粗对极轴最简单方法
  5. ETL工具kettle的组件--生成记录
  6. mysql 横向排列,mysql横向转纵向、纵向转横向排列的方法
  7. h系列标签自动加了bold
  8. 人脸方向学习(十八):Face Landmark Detection-SAN-解读
  9. C#中日历控件的使用monthCalendar,dateTimePicker
  10. matlab画森林图,R语言meta分析(4)网状Meta 分析
  11. cad字体安装_装了1个G的CAD字体后,我的CAD崩了怎么办?
  12. 机器学习防止模型过拟合方法总结
  13. 前端必知:微信小程序如何引入阿里图标
  14. 微信小程序组件、路由、组件通信、侦听器
  15. 22款奔驰S400L升级原厂主动氛围灯,H17钢琴条纹饰板等,浪漫奢华
  16. 2022华为软挑比赛(初赛笔记)
  17. tl-wdr7300虚拟服务器怎么设置,TP-Link TL-WDR7300路由器无线桥接怎么设置?
  18. 软件架构师:走钢索的人
  19. 原创]师大往事——我在川师的几年青春岁月
  20. 这次一定弄懂完全图、连通图、连通分量、强连通图、强连通分量、极大连通分量、极小联通分量、生成树、生成森林的区别

热门文章

  1. tensorflow处理简单线性回归
  2. 主题模型LDA的实现
  3. 异配图神经网络小结:突破同配性,拥抱异配性
  4. ICCV 2021 | 通过显式寻找物体的extremity区域加快DETR的收敛
  5. 岗位推荐 | 腾讯AI Lab多媒体算法组招聘正式员工和实习生
  6. poj 1797 Dijkstra算法
  7. php es6写法,Web/PHPStorm ES6 语法支持以及实时编译
  8. 第一次安装Intellij IDEA过程中遇到的坑
  9. [HNOI2003]操作系统
  10. Bear and Strings