static代码块是在类初始化时就被虚拟机执行的,所以最先输出的是d.
main方法是静态方法,是在类加载完之后由虚拟机调用的,调用之后才会输出c1.
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;
你的synchronized将while循环都锁住了,所以其中一个线程会将整个while循环执行玩再走其他线程,但你的共享数据这时候已经被循环至0了,所以只有一个线程在执行
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用
比如main方法就必须是静态的
先说执行顺序:我们在new一个对象时,如果类还没加载,就需要先将类加载到内存,此时就会执行静态代码块,在创建对象时,是先执行代码块,然后执行构造器.所以静态代码块、代码块、构造器的执行顺序是:静态代码块→代码块→构造器.
再说作用:静态代码块是用于初始化类的(在加载类时执行,只执行一次),代码块是用于初始化对象的(在创建对象时执行,每次创建对象时都执行),构造器是用于创建对象的.
静态代码块的定义是在类被加载进内存中的方法区的时候调用,而加载类到内存中只需要执行一次即可,所以静态代码块也是只执行一次
顺序执行,就是正常情况下
选择执行(分支),就是用if else...可以使用多次,还有个switch? case
循环执行,常用的用for循环,while循环,do while循环
就我理解题意好像就这三种
以上就是土嘎嘎小编为大家整理的java代码块执行相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!