请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

关于java中三种初始化块的执行顺序

[复制链接]
查看: 11|回复: 0

1万

主题

2万

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
46407
发表于 2019-11-9 09:03 | 显示全部楼层 |阅读模式
很多小同伴对于java中的三种初始化块的实行次第不停感应头疼,接下来我们就来分析一下这三种初始化块究竟是怎样运转的。有些公司也会将这个题目作为笔试题目。
下面经过一段代码来看看建立工具时这么初始化块是怎样运转的
  1. package com.hxy;public class CodeBlock{    public static void main(String[] args) {        new HelloB();       // new HelloB();    }}class HelloA{    //无参机关器    public HelloA(){        System.out.println("Hello A");    }    //初始化块    {        System.out.println("I'm A");    }    //静态初始化块    static{        System.out.println("Static A");    }}class HelloB extends HelloA{    public HelloB(){        System.out.println("Hello B");    }    {        System.out.println("I'm B");    }    static{        System.out.println("Static B");    }}
复制代码
运转结果以下图所示:

关于java中三种初始化块的执行顺序  游戏 1746148-20191108211017818-1565928656

从运转结果来看,在新建立一个工具的时候,步伐先实行初始化块,再实行机关器。
当普通初始化块被static修饰后就酿成了静态初始化块,也被称作类初始化块
普通初始化块是对工具举行初始化,而静态初始化块是对类举行初始化。所以静态初始化块要比普通初始化块先实行。
从上面的运转结果看。当第一次建立HelloB工具时,要先加载并初始化HelloB类。初始化HelloB类会先实行它父类的静态初始块(Static A),然后再实行它的静态初始化块。
综上所述:初始化块的实行次第为:静态初始化块、普通初始化块、机关器。
接下来再看建立两个HelloB工具时它们又是怎样运转的。下面是运转结果:
关于java中三种初始化块的执行顺序  游戏 1746148-20191108213012090-583891941


从运转结果来看,大要出乎一些小同伴的预感。
静态初始化块只在第一次建立工具时实行,也就是说不管建立频频工具。静态初始化块都只会实行一次。普通代码块和机关器则是建立频频实行频频,且普通代码块比机关器先实行。


免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 妈妈网-中国妈妈第一,是怀孕、育儿、健康等知识交流传播首选平台 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表