java代码块是什么_Java代码块
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代码块相关推荐
- java代码块执行顺序_JAVA代码块执行顺序分析测试
在实际的工作过程中,几乎从没用过JAVA的代码块.不过既然做了这方面的学习与测试,就索性记录下来防止忘记.同一个招式,圣斗士是不会学习第二遍的... 首先,上代码: public class Code ...
- java每一个小时同步_Java同步块(synchronized block)使用详解
Java 同步块(synchronized block)用来标记方法或者代码块是同步的.Java同步块用来避免竞争.本文介绍以下内容: Java同步关键字(synchronzied) 实例方法同步 静 ...
- java代码解决的问题_java代码规范问题及解决方案
java代码规范问题总结 1.没有总是检查ResultSet结果对象 解决方案是通过if判断ResultSet结果是有有元素,常用条件是ResultSet结果的next,previous,first, ...
- java ip加密如何访问_java代码中如何实现http访问
作者:释怀Na 出自:CSDN 原文:blog.csdn.net/qq_35906921/article/details/98076258 java代码中如何实现http访问 大概的实现就是 请求ht ...
- java 中组合与复用_Java 代码复用(组合与继承)
java中的类都是围绕着类进行的.可以通过创建新类来复用代码,而不必从头编写.可以使用别人已经开发并调试好的类.此方法使用的窍门在于使用类而不破坏现有的程序代码.达到这一目的的方法有两种: 第一种方法 ...
- java css网页布局实例_java代码例子
JAVA 类名.方法名(这里面写的是什么)能不能写个代要是类名直接调用的方法,那这个方法就是静态的(static)方法,是不用new出新对象实例就可以直接调用的方法.看下面例子: class A{ p ...
- java如何添加自定义的图片_java代码将图片加上自定义水印 -4
java代码将图片加上自定义水印,然后生成了新的图片 import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; ...
- 在线运行java代码并得到结果_Java代码是如何运行的?
作为一名Java程序员,你应该知道Java有很多种运行方式.比如说可以在开发工具中运行,可以双击jar包运行,可以在网页端运行.当然这些运行方式都离不开JRE「也就是java运行时环境」. 实际上, ...
- java下载文件到服务器_java代码实现上传文件到文档服务器、下载文档服务器文件...
需要完成下载->修改->上传这三个步骤 平台有提供对应的api吗? /** 首先我们来理解下关于文档的api 文档相关api都在这2个package下面 package :com.just ...
最新文章
- python使用imbalanced-learn的OneSidedSelection方法进行下采样处理数据不平衡问题
- MySQL的并发控制与加锁分析
- 如何设计一门语言(二)——什么是坑(b)
- emqtt 试用(二)验证 emq 和 mosquito 的共享订阅
- Java 获取当前项目的类路径
- GPU Gems1 - 1 用物理模型进行高效的水模拟(Effective Water Simulation from Physical Models)
- 华为荣耀20和x10比较_荣耀X10和华为畅享20plus,到底哪个更值得入手?
- python中写入csv文件的方法_Python写入CSV文件的方法
- R7-6 A-B (20 分)
- oracle sql取查询结果第一条,SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...
- python读mat文件_我用Python对咪蒙的1013篇历史文章做了一次深度的数据分析...
- 关于团队项目的一些思考和理解
- 拓端tecdat|时间序列建模三部曲
- 什么软件测试情侣头像,即刻情侣头像配对器
- 谷歌“Adobe Flash Player已被屏蔽”的解决办法
- python常用语音识别库_干货收藏 | Python语音识别终极指南
- C++中的仿函数(functors)和仿函数适配器(adapter function)
- Unity将相机内容输出成图片
- 跨考计算机要选择408吗,408难度比较大,对于跨考更是如此,应从以下三个方面做准备...
- 我不恨你,我只恨我们有缘无分
热门文章
- Open3d之点云顶点法线估计
- arcgis重心迁移分析_【停课不停研ArcGIS制图微教程系列】土地利用分布图的制作——以温州市为例...
- JQuery筛选器全系列介绍
- myeclipse汉化及其相关配置设置(转)
- Keepalived-在没有之前配置的Nginx高可用(不建议采纳)
- Windows用户程序报错或软件无法删除或者卡顿,解决办法
- mysql 恢复同步_常见MySQL同步错误恢复方法
- Learnopengl
- 【李宏毅2020 ML/DL】P110-111 Policy Gradient Proximal Policy Optimization
- 【Computer Organization笔记01】计算机组成原理课程要求、计算机的层次结构、计算机的发展历史