Java中四种代码块的区别
来源:互联网 发布:linux dhcp服务配置 编辑:程序博客网 时间:2024/06/05 03:40
Java代码块
一.在Java中,使用”{}”括起来的代码称为代码块,代码块可以分为以下四种:
1.普通代码块:就是类中方法的方法体
public void xxx(){
//code
}
2.构造块:用{}裹起来的代码片段,构造块在创建对象时会被调用,每次创建对象时都会被调用,并且优先于类构造函数执行。 构造块中定义的变量是局部变量。
{
//code
}
3.静态块:用static{}裹起来的代码片段,只会被执行一次(第一次加载此类时执行,比如说用Class.forName("")加载类时就会执行static block),静态块优先于构造块执行。
static{
//code
}
4.同步代码块:使用synchronized(obj){}裹起来的代码块,在多线程环境下,对共享数据进行读写操作是需要互斥进行的,否则会导致数据的不一致性。常见的是synchronized用来修饰方法,其语义是任何线程进入synchronized需要先取得对象锁如果被占用了,则阻塞,实现了互斥访问共享资源。而synchronized也是有代价的。一个常见的场景是,一个冗长的方法中,其实只有一小段代码需要访问共享资源,这时使用同步块,就只将这小段代码裹在synchronized block,既能够实现同步访问,也能够减少同步引入的开销。 同步代码块须写在方法中。
synchronized(obj){
//code
一.在Java中,使用”{}”括起来的代码称为代码块,代码块可以分为以下四种:
1.普通代码块:就是类中方法的方法体
public void xxx(){
//code
}
2.构造块:用{}裹起来的代码片段,构造块在创建对象时会被调用,每次创建对象时都会被调用,并且优先于类构造函数执行。 构造块中定义的变量是局部变量。
{
//code
}
3.静态块:用static{}裹起来的代码片段,只会被执行一次(第一次加载此类时执行,比如说用Class.forName("")加载类时就会执行static block),静态块优先于构造块执行。
static{
//code
}
4.同步代码块:使用synchronized(obj){}裹起来的代码块,在多线程环境下,对共享数据进行读写操作是需要互斥进行的,否则会导致数据的不一致性。常见的是synchronized用来修饰方法,其语义是任何线程进入synchronized需要先取得对象锁如果被占用了,则阻塞,实现了互斥访问共享资源。而synchronized也是有代价的。一个常见的场景是,一个冗长的方法中,其实只有一小段代码需要访问共享资源,这时使用同步块,就只将这小段代码裹在synchronized block,既能够实现同步访问,也能够减少同步引入的开销。 同步代码块须写在方法中。
synchronized(obj){
//code
}
阅读全文
0 0
- Java中四种代码块的区别
- Java中静态代码块、构造代码块的区别
- Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例
- java中普通代码块,静态代码块,构造代码块的区别及代码示例
- Java中的各种代码块的区别
- Java中普通代码块、构造代码块、静态代码块的区别
- java中普通代码块、构造代码块、静态代码块的区别
- java中静态代码块,构造代码块,静态代码块的区别
- Java中局部代码块、构造代码块、静态代码块的区别?
- Java中普通代码块、构造代码块、静态代码块的区别?
- Java中的构造代码块、静态代码块、普通代码块的区别
- Java 三种代码块(静态代码块、普通代码块、构造代码块)的区别
- 静态代码块 初始化块 代码块的区别
- 【java基础】static静态代码块,构造器代码块以及局部代码块的区别与应用!
- Java的构造代码块和静态代码块的区别
- Java的代码块
- JAVA的代码块
- Java的代码块
- 2.5 数组
- 服务器容错保护(Hystrix依赖隔离)
- 哈希表C开源的uthash的简单初步封装(二)
- 个人开发者如何通过人工智能盈利?智能原理及阿尔法狗详解
- MM 委外加工(Subconctracting)流程
- Java中四种代码块的区别
- C++移位运算符
- CentOS 7 修改主机名
- 安装单节点的zookeeper
- GDAL+VS2010
- 排列组合(c/python)
- 【实例讲解】DS18B20 ROM码的搜索算法
- 版本兼容
- 论文阅读:Fixing Weight Decay Regularization in Adam