前言
在上篇博客中提到了什么是代码块(点我查看上篇博客)。也提到了代码块分为四类:静态代码块、构造代码块、局部代码块、同步代码块。那么关于这几种代码块的特点?作用?什么时候被执行?等问题,大家思考下~下面来为大家揭晓
正文:
1、静态代码块:
1.1 代码展示:
1.2 特点:
1)随着类的加载而执行,而且只一次。
2)优先于主函数执行
1.3 作用:
1)对类的静态资源进行初始化
1.4 继承关系中静态代码的执行顺序:
1)先执行父类的静态代码块,后执行子类的静态代码块
2、构造代码块:
2.1 代码展示:
2.2 特点:
1)存在于类中,创建对象时才被执行,可以被执行多次
2)优先于构造方法执行,后于静态代码块的执行
2.3 作用:
1)当类中的构造方法以冲横在的形式存在时,并且有共同成员变量或共同的方法时,可以通过构造代码块对其进行初始化,这样可以减少代码的重复。
2.4 构造代码块与构造方法的比较:
1)在创建对象时,构造代码块才会被执行,而且优先于构造方法执行。
2)无论是调用有参构造方法,还是调用无参构造方法,都会先调用同一个构造代码块
3)当所有对象的某条属性具有相同的属性值时,完全可以将该属性写在构造代码块中进行赋值,这样在创建对象时,就不用给它设置参数了,大大减少了代码量。
2.5继承关系中的执行顺序
1)创建对象阶段:父类的构造代码块——>父类的构造方法——>子类的构造代码块——>子类的构造方法
3、局部代码块:
3.1 代码展示:
3.2 特点:
1)存在于方法之中
2)局部代码块中声明的变量,只能在局部代码块中进行访问
3)局部代码块可以操作非局部代码块的变量,并且不会影响执行顺序
3.3 作用:
1)用来限制局部变量的生命周期,及早释放,提高内存利用率
4、同步代码块:
4.1 引入:
1)Java对于多线程的安全问题提供了专业的解决方式,就是同步代码块
4.2 写法:
4.3 特点
实现线程同步,同步的前提:
1)必须要有两个或者两个以上的线程
2)必须是多个线程使用同一个锁
总结:
思考:当两个类存在继承关系,若都创建了对象,并且两个类都具有各自的静态代码块,构造代码块和构造方法时,它们的执行顺序?
1)加载类阶段执行顺序:父类静态代码块——>子类静态代码块
2)创建对象阶段:父类的构造代码块——>父类的构造方法——>子类的构造代码块——>子类的构造方法
遗留问题:其实关于同步代码块这块儿小编还是没弄明白,如何大家有何高见,给小编留言~
感谢你的阅读~❀


2698

被折叠的 条评论
为什么被折叠?



