Java中静态代码块就是在类加载时会初始化的代码块,是主动执行的;
而非静态代码块是在创建对象时才会被执行,不创建对象则不执行;
执行顺序为:静态代码块------>非静态代码块------>构造函数;
静态代码块在类加载后只执行一次,而非静态代码块则会随着构造方法的调用来执行
以下是对静态代码块和非静态代码块的测试
public class StaticTest {
public static int id=1001;//静态变量
//public int w; //非静态变量
static {
id++;
//w=20; 静态初始化块只能给静态变量赋值,不能初始化非静态变量W
System.out.println(id );
}
//普通代码块
{
int a=20;
System.out.println(a);
}
//普通代码块1
{
int b=30;
System.out.println(b);
}
public static void main(String[] args){
//构造方法在执行之前,会先
//执行普通代码块,就是普通代码块的书写顺寻
//构造方法执行之前也会先执行静态代码块
//1、静态代码块(静态代码块只执行一次)
//2、普通代码块
//3、构造方法
new StaticTest();
new StaticTest();
}
}
初学Java,望大牛指点!
转载请注明原文地址: https://ju.6miu.com/read-667508.html