代码块的定义:
直接被{ }花括号封装的代码称为代码块
代码块可以分为四种:
1.普通代码块–定义在方法中的代码块
普通代码块确定了该代码块中变量的作用域,出了代码块代码变量失效。也就是说代码是定义在栈上的,所以Java中规定普通代码块中不能定义静态变量(编译错误),方法中就不允许定义静态变量,代码块中就更不可以了啊。
class Test{
public void fun(){
{
int a;
}
}
}
2.构造快 --定义在类中不加任何修饰符的代码块
构造快在对象产生时被调用,调用顺序优先于构造方法执行,有几个对象,该构造块被调用几次。
用于在构造方法执行前完成一些属性的初始化操作。
class A{
int a;
A(){
a=1;
}
{
a =0;
}
}
3.静态代码块
静态代码块分为非主类静态代码块和主类中的静态代码块
1>非主类静态代码块
在类加载时执行(啥时候被使用),优先于构造块,无论有多少对象,只会被调用一次
2>主类中的静态代码块
主类中的静态代码块,优先于主方法执行,其他的和非主类相同
public class A{
int a ;
static{
a =1;
}
public static void main(String[] args){
System.out.print(a);
}
}
4.同步代码块