【Java】——代码块

前言

         在上篇博客中提到了什么是代码块(点我查看上篇博客)。也提到了代码块分为四类:静态代码块、构造代码块、局部代码块、同步代码块。那么关于这几种代码块的特点?作用?什么时候被执行?等问题,大家思考下~下面来为大家揭晓

正文:   

       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)创建对象阶段:父类的构造代码块——>父类的构造方法——>子类的构造代码块——>子类的构造方法

      遗留问题:其实关于同步代码块这块儿小编还是没弄明白,如何大家有何高见,给小编留言~


                                                                  感谢你的阅读~❀

                                     

评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值