java中构造代码块、static代码块和局部代码块的区别
class StaticCode{ int age; // static 代码块 static{ System.out.print("static "); } //构造代码块 { System.out.print("55 "); } // 构造函数 StaticCode(int age){ this.age=age; System.out.print(age+","); } void show(){ // 局部代码块 { int age=30; } System.out.print("show:"+age+","); } } class StaticCodeDemo{ public static void main(String[] args){ StaticCode p1=new StaticCode(20); p1.show(); StaticCode p2=new StaticCode(20); } }
// 执行结果为:static,55,20,show,55,20
// 分析:
// 1、先执行StaticCode这个类,所以static
// 2、创建p1对象,执行构造代码块,55
// 3、执行构造函数初始化,20
// 4、执行p1.show(),show:20
// 5、 创建p2对象,执行构造代码块,55
// 6、执行构造函数初始化,20
// 总结: static 代码块随着类的加载,只加载一次。作用是初始化类。
// 构造代码块,可以给所有对象进行初始化的。创建几个对象就调用几次,是给对象进行通用性的初始化。
// 构造函数是给对应的对象进行针对性的初始化。
// 局部代码块限定函数中变量的生命周期,age=30局部代码执行完。自动释放掉了。