静态变量和成员变量都有两次初始化,一次是默认初始化,另一个是显示初始化
例如int i=9;默认初始化值为0,显示初始化值为9。
使用前提:在类加载的时候,就要执行的行为。但对象无法调用。
static 代码块:
特点:随着类的加载,就会执行。仅执行一次,就会驻留在方法区。
作用:给类进行初始化。和对象无关
代码:
public class Person {
static int age=9;
static {
System.out.println("sleep.."+age);
}
public Person() {
// TODO Auto-generated constructor stub
}
public static void show() {
System.out.println("show");
}
}
public class Demo1 {
public static void main(String[] args) {
Person.show();
}
}
静态代码块中,是先显式初始化静态变量,再执行静态代码块的。
局部代码块:
作用:可以控制代码的声明周期 。
代码:
public class Demo1 {
public static void main(String[] args) {
{
int x=2;
System.out.println(x);
}
System.out.println(x);
}
}
局部代码块是存在于函数中的,并且在其中定义的变量,在外面就无法使用。
构造代码块:
特点:只要创建对象,就会执行。给所有对象进行初始化。
构造函数只给对应的的对象针对性的初始化。
构造代码块可以定义不同构造函数的共性代码块。
代码:
public class Person {
{
System.out.println("构造代码块执行了");
}
public Person() {
// TODO Auto-generated constructor stub
System.out.println("创建对象");
}
}
}
public class Demo1 {
public static void main(String[] args) {
Person p=new Person();
Person p2=new Person();
}
}