Java中4种代码块:普通代码块,静态代码块,同步代码块,构造代码块

简介: Java中4种代码块:普通代码块,静态代码块,同步代码块,构造代码块

普通代码块:
定义:在方法、循环、判断等语句中出现的代码块
修饰:只能用标签修饰
位置:普通代码块可以出现在方法体内除"()"外的任何地方,包括 方法体,代码块中(即可以嵌套在代码块中)
执行:普通代码依赖方法的执行而执行,按照正常的先后顺序执行
作用:将多行代码封装在一起,实现特定的功能。(有点废话)
注意:无
静态代码块
定义:在类中定义使用static修饰的代码块
修饰:使用static修饰
位置:它不能出现在方法体或者代码块内
执行:在加载类时会先执行静态代码块,且只执行一次,如果有多个静态代码块则按照先后顺序执行
作用:一般用于静态变量的初始化,创建对象前的环境的加载
注意:静态代码块中不能直接访问非静态变量和方法,需要通过类的实例对象来访问
同步代码块
定义:可以简单地认为同步代码块是使用 synchronized 修饰的普通代码块
位置:同普通代码块
执行:同普通代码块
作用:用于多线程环境的同步保护
注意:注意同步代码块使用不当可能会造成“死锁”
构造代码块
定义:在类中定义且没有加任何修饰的代码块
位置:它不能出现在方法体或者其他代码块内
执行:依赖于构造函数的调用而执行
作用:初始化实例变量和实例环境,一般用于提取类构造函数中的公共代码
注意:构造代码块不是在构造函数之前执行的!!!编译器在编译的时候会把构造代码块插入到每个构造函数的最前面!!
构造代码块随着构造函数的执行而执行!!
如果某个构造函数调用了其他的构造函数,那么构造代码块不会插入到该构造函数中以免构造代码块执行多次!
执行案例:
复制代码
public class CodeAreaExecuteDemo{
static{
System.out.println("static code block!");
}
{
System.out.println("construct code block!");
public CodeAreaExecuteDemo(){
System.out.println("Constructor() ");
public static void main(String[] args) {
new CodeAreaExecuteDemo();
}

//代码效果参考:http://0791zd.com/bx/art_7823.html

执行结果:
static code block!
construct code block!
Constructor()
反编译结果:
CodeExecuteDemo.png
我们发现构造代码块确实被插入到了构造函数最前面中
构造代码块与构造函数关系的案例
public class ConstructorDemo{
public ConstructorDemo(){}
public ConstructorDemo(int num){
this();
}
反编译结果如下:
ConstructorDemo.png

相关文章
|
3月前
|
Java 开发者 C++
Java多线程同步大揭秘:synchronized与Lock的终极对决!
Java多线程同步大揭秘:synchronized与Lock的终极对决!
78 5
|
1月前
|
存储 消息中间件 安全
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
【10月更文挑战第9天】本文介绍了如何利用JUC组件实现Java服务与硬件通过MQTT的同步通信(RRPC)。通过模拟MQTT通信流程,使用`LinkedBlockingQueue`作为消息队列,详细讲解了消息发送、接收及响应的同步处理机制,包括任务超时处理和内存泄漏的预防措施。文中还提供了具体的类设计和方法实现,帮助理解同步通信的内部工作原理。
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
|
17天前
|
Java 调度
Java 线程同步的四种方式,最全详解,建议收藏!
本文详细解析了Java线程同步的四种方式:synchronized关键字、ReentrantLock、原子变量和ThreadLocal,通过实例代码和对比分析,帮助你深入理解线程同步机制。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Java 线程同步的四种方式,最全详解,建议收藏!
|
23天前
|
安全 Java 开发者
Java多线程中的`wait()`、`notify()`和`notifyAll()`方法,探讨了它们在实现线程间通信和同步中的关键作用
本文深入解析了Java多线程中的`wait()`、`notify()`和`notifyAll()`方法,探讨了它们在实现线程间通信和同步中的关键作用。通过示例代码展示了如何正确使用这些方法,并分享了最佳实践,帮助开发者避免常见陷阱,提高多线程程序的稳定性和效率。
33 1
|
1月前
|
Java 编译器
【一步一步了解Java系列】:子类继承以及代码块的初始化
【一步一步了解Java系列】:子类继承以及代码块的初始化
23 3
|
3月前
|
安全 Java 开发者
Java多线程同步:synchronized与Lock的“爱恨情仇”!
Java多线程同步:synchronized与Lock的“爱恨情仇”!
86 5
|
3月前
|
Java 程序员
从0到1,手把手教你玩转Java多线程同步!
从0到1,手把手教你玩转Java多线程同步!
39 3
|
3月前
|
Java 测试技术
Java多线程同步实战:从synchronized到Lock的进化之路!
Java多线程同步实战:从synchronized到Lock的进化之路!
100 1
|
3月前
|
存储 算法 Java
Java 中的同步集合和并发集合
【8月更文挑战第22天】
44 5
|
3月前
|
安全 Java
Java 中同步 ArrayList 的详细指南
【8月更文挑战第23天】
59 1