在java中用{}表示代码块,有如下四种
1.普通代码块,用{}表示,写在方法中.在代码块中定义的变量只在代码块的作用域中有效.
public static void main(String[] args)
{
{
int x=1;
System.out.println(x);
}
int x=2;
System.out.println(x);
}
这两个x是不冲突的.输出结果为 1 2.
2.构造代码块{}写在类的成员位置,用来给所有的对象统一初始化,优先于构造函数执行.
每次new一个对象,构造代码块都会自动执行一次,然后再去调用对应的构造函数.
3.静态代码块static {} 写在类的成员位置,
优先于main函数执行.
优先于所有代码块执行,.并且只执行一次.
与静态方法的区别:
静态代码块是自动执行的.
而静态方法需要用类名调用,是被动执行的.
4.同步代码synchronized (obj){},不可以写在类的成员位置,只能写在方法中.需要传入参数,Object,作为锁.在多线程的情况下,只有使用相同的Object作为锁才可以达到同步的目的.