特点:随着类的加载而执行,只执行一次,并优先于主函数
作用:用于给类进行初始化用的
格式:
static{
静态代码块中的执行语句
}
1 public class StaticCode1 { 2 static{ 3 System.out.println("b"); 4 } 5 public static void main(String[] args) { 6 new StaticCode(); 7 new StaticCode(); 8 System.out.println("c"); 9 } 10 static 11 { 12 System.out.println("d"); 13 } 14 } 15 class StaticCode{ 16 static 17 { 18 System.out.println("a"); 19 } 20 } 21 //打印结果是:b d a c
1 class Demo{ 2 //静态变量和静态代码块,即使还没创建对象就已经存在代码区了,静态代码块自动执行 3 static int i = 1; 4 static{//静态代码块只执行一次 5 System.out.println("a");//没对象也可以打印出来 6 i++; 7 } 8 public Demo(){ 9 System.out.println("b"); 10 i++; 11 } 12 }
1 public class StaticCode2{ 2 public static void main(String[] args) { 3 new StaticCode5();//结果是acb 4 new StaticCode5(4);//结果是acd 5 } 6 } 7 class StaticCode5{ 8 StaticCode5(){ 9 System.out.println("b"); 10 } 11 static{//静态代码块用于给类初始化(类一加载只执行一次,再创建第二个对象不会再执行,因为类已经加载进来了) 12 System.out.println("a"); 13 } 14 //构造代码块用于给所有对象统一初始化 15 { 16 System.out.println("c"); 17 18 } 19 //构造函数给对应对象初始化的 20 StaticCode5(int x){ 21 System.out.println("d"); 22 } 23 }
时间: 2024-10-03 21:57:50