Java代码块
在Java中使用花括号括起来{}的代码被称为代码块,根据其位置和声明的不同,分为了局部代码块,静态代码块,实例代码块,同步代码块。
局部代码块
在方法中出现,可以限定变量生命周期,及早释放,提高内存利用率。
局部代码块示例
public class Test{
public static void main(String[] args) {
//局部代码块
{
int n = 100;
}
// 局部代码块中声明的变量n作用域仅限于局部代码块内部,外部无法访问。
// System.out.println(n); 报错
}
}
静态代码块
必须有static修饰,必须放在类下,不能放在方法中。与类一起加载执行,并且静态代码块只执行一次。
静态代码块示例
public class main {
public static String name;
// 静态代码块
static {
// 初始化静态资源
name = "张三";
System.out.println("静态代码块执行,只会执行一次...");
}
public static void main(String[] args) {
System.out.println("main方法执行...");
System.out.println(name); // "充气皮皮虾"
System.out.println(name);
}
}
实例代码块
没有static修饰,必须放在类下。与对象初始化一起加载,即每次创建对象都会执行,并且在构造方法前执行。
实例代码块示例
public class Test3{
private String name;
// 实例代码块。 无static修饰。
{
System.out.println("实例代码块执行...");
name = "张三";
}
// 构造器
public Test3(){
System.out.println("无参构造方法执行...");
}
// 有参数构造器
public Test3(String name){
System.out.println("有参构造方法执行...");
this.name = name;
}
public static void main(String[] args) {
Test3 t1 = new Test3();
Test3 t2 = new Test3("李四");
System.out.println(t1.name + t2.name);
}
}
//实例代码块执行...
//无参构造方法执行...
//实例代码块执行...
//有参构造方法执行...
//张三李四
同步代码块
同步代码块指的是被Java中Synchronized关键词修饰的代码块,在Java中,Synchronized关键词不仅仅可以用来修饰代码块,与此同时也可以用来修饰方法,是一种线程同步机制,被Synchronized关键词修饰的代码块会被加上内置锁。
同步代码块是Java中一种常用的同步机制,可以用于保证多个线程对共享资源的安全访问。通过使用同步代码块,我们可以避免并发问题。
同步代码块定义
synchronized(Obj){}