java 代码块的作用_4种Java代码块的作用讲解

4种Java代码块的作用讲解

时间:2017-06-28     来源:华清远见JAVA学院

今天华清Java学院小编要和大家分享的是Java代码块的作用,代码块是一种常见的代码形式,他用大括号“{}”将多行代码封装在一起,形成一个独立的代码区,这就构成了代码块。代码块的格式如下:

25ed011479d0f2d0f6058ff018677d05.png

java中的代码块按其位置划分为四种:

Java代码块一:局部代码块

位置:局部位置(方法内部)

作用:限定变量的生命周期,尽早释放,节约内存

调用:调用其所在的方法时执行

举例:

class exampleDemo{

public void example(){

{

int a = 10;

System.out.println(a);

}}}

Java代码块二: 构造代码块

位置:类成员的位置,就是类中方法之外的位置

作用:把多个构造方法共同的部分提取出来,共用构造代码块

调用:每次调用构造方法时,都会优先于构造方法执行,也就是每次new一个对象时自动调用,对 对象的初始化

举例:

class exampleDemo{

{

int a = 10;

System.out.println(a);

}

public void example(){

}}

Java代码块三: 静态代码块

位置:类成员位置,用static修饰的代码块

作用:对类进行一些初始化 只加载一次,当new多个对象时,只有第一次会调用静态代码块,因为,静态代码块 是属于类的,所有对象共享一份

调用: new 一个对象时自动调用

举例:

class exampleDemo{

static {

int a = 10;

System.out.println(a);

}

public void example(){

}

}

执行顺序 静态代码块 -----> 构造代码块 -------> 构造方法

Java代码块四: 同步代码块

位置:方法内部

作用:达到线程安全的目的

调用: 线程调用该方法时

格式:

synchronized(obj){

// 需要同步执行的代码

}

obj 作为参数传递 相当于同步代码块的锁,可以是任意对象

同步代码块:

使用synchronized(obj){ } 裹起来的代码块,

在多线程环境下,对共享数据进行读写操作是需要互斥进行的,否则会导致数据的不一致性。常见的是synchronized用来修饰方法,其语义是任何线程进入synchronized需要先取得对象锁如果被占用了,则阻塞,实现了互斥访问共享资源。而synchronized也是有代价的。一个常见的场景是,一个冗长的方法中,其实只有一小段代码需要访问共享资源,这时使用同步块,就只将这小段代码裹在synchronized block,既能够实现同步访问,也能够减少同步引入的开销。 同步代码块须写在方法中。

synchronized(obj){

//code

}

Java代码块的作用很多,以上介绍了Java中常见的4种代码块极其各自的作用,希望以上的总结,对大家理解和使用Java代码块有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java properties用法_java中Properties文件加载和使用方法

一.Properties简介Properties 类继承自HashTable,提供的方法很像Map的实现类HashMap。它在 Java 编程的早期就有了,并且几乎没有什么变化。J2SE 的 Tiger 版本增强了这个类,不仅可以用它在单独一行中指定用等号分隔的多个键-值对(其中键和值是…

java基础知识点_JAVA基础知识

1.注释,关键字,标识符1.注释(1)注释:解释说明程序的而文字。(2)注释的分类:单行注释 格式: //注释的文字多行注释 格式:/*注释的文字*/文档注释 格式:/**注释的文字*/(3)注释的作用:…

python无人机路径规划算法_RRT算法在Python中的实现,快速,拓展,随机,树

"""《基于智能优化与RRT算法的无人机任务规划方法研究》博士论文《基于改进人工势场法的路径规划算法研究》硕士论文"""import matplotlib.pyplot as pltimport randomimport mathimport copyshow_animation Trueclass Node(object):"&quo…

uc3842改可调电源教程_明纬开关电源改可调详细教程

1.拆除启动电阻,电路板是R12R59R58R9 四个150K的电阻。2.拆除原494供电,去掉J22一根跳线,12V辅助电源正极接J22到494一端,负极接地。3.去掉J15更换为20K电阻,同时拆掉变压器下面的ZD1过压保护,输出可达到50…

java webservice ip_通过Web Service实现IP地址查询功能的示例

实例01 实现一个简单的Web服务访问本实例将实现IP地址查询接口服务,根据用户传入的IP地址返回IP所在的省、市、地区,实例中将会用到IP地址库用于查询信息,由于数据较多,所以读者可在光盘资源文件中直接附加数据库文件,…

java五星好评点评器_亲,麻烦给个五星好评!—RatingBar

引言上一篇的CheckBox已经让大家越来越接近实战演练了,本章我们继续分享干货给大家,今天介绍一个实用的UI控件RatingBar(星级评分条),对于使用过电商APP(某东,某宝等)的小伙伴们来说,应该不会陌生。在对商品进行评价时…

java激光推送ios_关于ios极光推送server端注意的地方

今天试用了极光推送API用它是因为,大多数人说它的文档是最全的,但是用过之后,发现关于IOS的文档,还是很不够,导致走了一点弯路!特别是服务端的代码:https://github.com/jpush/jpush-api-java-cl…

日是这一年的等几天Java代码_java中计算指定日期是一年的第几天的方法

Java输入日期计算是这年的第几天:思路通过年份区分出是闰年还是平年,平年 2 月 28 天,闰年 2 月 29 天;1、3、5、7、8、10、12 月份 31 天其余月份均为 30 天;然后将每个月的天数相加即可,注意如果输入的是…

[2021-CVPR] Fine-grained Angular Contrastive Learning with Coarse Labels 论文简析

[2021-CVPR] Fine-grained Angular Contrastive Learning with Coarse Labels 论文简析 论文地址:https://arxiv.org/abs/2012.03515 代码地址:https://github.com/guybuk/ANCOR 首先通俗地介绍一下细粒度(fine-grained)&#…

[2020-AAAI] Revisiting Image Aesthetic Assessment via Self-Supervised Feature Learning 论文简析

[2020-AAAI] Revisiting Image Aesthetic Assessment via Self-Supervised Feature Learning 论文简析 论文链接:https://arxiv.org/abs/1911.11419 本文探索从自监督的角度进行美学评估。基于一个基本的动机:一个好的美学特征表示应该能够辨别出不同的…

java9 堆外内存_java堆外内存泄漏排查

当考虑Java中的内存泄漏时,我们通常会考虑Java堆泄漏,即在堆中分配的对象没有被垃圾收集。这是我在处理一台服务器内存泄漏时的想法,但我即将经历的远超出我的想象。症状:运行Vertx应用程序(没有交换分区)的生产服务器被Linux内存…

[2020-CVPR] Dynamic Region-Aware Convolution 论文简析

[2020-CVPR] Dynamic Region-Aware Convolution 论文简析 论文地址:https://arxiv.org/abs/2003.12243 参考代码地址(非官方):https://github.com/shallowtoil/DRConv-PyTorch 代码笔者自己试了一下,应该是可以的&…

mmdetection 使用笔记 01: 安装与简单的推理demo

mmdetection 使用笔记 01: 安装与简单的推理demo mmdetection是来自商汤和港中文联合实验室openmmlab推出的目标检测工具包,与其同系列的还有基础视觉包mmcv,图像分类mmclassification,还有mmaction,mmaction2等等。 今天第一次…

php无限评论回复_php实现无限级评论功能_后端开发

php去除数组的键名的方法_后端开发在php中可以使用“array_values()”函数去除数组的键名,该函数返回包含数组中所有的值的数组,其语法是“array_values(array)”,其参数“array”表示规定的数组,返回值是包含数组中所有的值的数组…

错误类型、混淆矩阵及目标检测常用评价指标

目标检测常用评价指标 本文主要参考陈恺大佬在B站商汤账号的介绍mmdetection的视频。 检测结果的正确/错误类型 真阳性(Ture Positive):算法检测到了某类物体(Positive),而实际图中也确实有这个物体&…

使用yolov5训练自己的目标检测数据集

使用yolov5训练自己的目标检测数据集 yolov4出来后不久,又出现了yolov5,没有论文。虽然作者没有放上和yolov4的直接测试对比,但在COCO数据集的测试效果还是很可观的。很多人考虑到YOLOv5的创新性不足,对算法是否能够进化&#xf…

php获取h1,jQuery获取h1-h6标题元素值方法实例

本文主要介绍了jQuery实现获取h1-h6标题元素值的方法,涉及$(":header")选择器操作h1-h6元素及事件响应相关技巧,需要的朋友可以参考下,希望能帮助到大家。1、问题背景:查找到h1-h6,并遍历它们,打印出内容2、实现代码&am…

[2021-CVPR] Jigsaw Clustering for Unsupervised Visual Representation Learning 论文简析及关键代码简析

[2021-CVPR] Jigsaw Clustering for Unsupervised Visual Representation Learning 论文简析及关键代码简析 论文:https://arxiv.org/abs/2104.00323 代码:https://github.com/dvlab-research/JigsawClustering 总结 本文提出了一种单批次&#xff0…

matlab legend 分块,matlab legend 分块!

matlab legend 分块!(2013-03-26 18:07:38)%%%压差clc;clear all;figure(55);set (gcf,Position,[116 123 275 210],color,w);P[25 26 27 28 29 30 31 32 33 34 35];%理论q0.00006*pi*28*P*10^(6)*0.03^3/(12*0.028448*5);q1110.00006*pi*28*P*10^(6)*0.03^3/(12*0.…

利用opencv-python绘制多边形框或(半透明)区域填充(可用于分割任务mask可视化)

利用opencv-python绘制多边形框或(半透明)区域填充(可用于分割任务mask可视化) 本文主要就少opencv中两个函数polylines和fillPoly分别用于绘制多边形框或区域填充,并会会以常见用途分割任务mask(还是笔者…