Java的静态块和初始化块分别何时执行?有什么区别?

 我来答
由悠悠yoyo
高粉答主

2020-11-03 · 就这样吧。
由悠悠yoyo
采纳数:324 获赞数:306346

向TA提问 私信TA
展开全部

静态初始化块:当类第一次加载时执行。

非静态初始化块:非静态初始化块会在构造函数执行时,且在构造函数主体代码执行之前被执行。

区别如下:

1、执行次数不同

静态块只执行一次,初始化块可以执行多次。

2、作用不同

静态初始化块仅能初始化类变量,即static修饰的数据成员。

非静态初始化块可以初始化类的实例变量。

扩展资料:

使用Java静态代码块注意事项:

1、它是随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。类调用时,先执行静态代码块,然后才执行主函数的。

2、静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。

3、静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。

4、一个类中可以有多个静态代码块。

5、对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。

人就是无奈
推荐于2018-05-11 · TA获得超过152个赞
知道答主
回答量:260
采纳率:0%
帮助的人:101万
展开全部
把下面这个问题搞懂,执行顺序的问题就差不多都搞懂了
父类和子类中都要静态代码块,非静态代码块,构造方法时。
初始化子类对象时,调用的顺序是
调用顺序:父类静态,子类静态,父类非静态,父类构造,子类非静态,子类构造
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syl_android
2013-11-18
知道答主
回答量:21
采纳率:0%
帮助的人:5.4万
展开全部
静态块在类第一次加载时执行。初始化块在调用构造方法是执行。
静态块只执行一次,初始化块可以执行多次。
建议看看《Java编程思想》中初始化相关的类容,讲解的很清楚。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liangdianshine
2013-11-18 · 超过10用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:35.9万
展开全部
静态代码块只初始化一次是相对于类而言。初始化是针对对象而言的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
artintin
2013-11-18 · TA获得超过1.2万个赞
知道大有可为答主
回答量:7508
采纳率:80%
帮助的人:2844万
展开全部
静态块在第一个对象创建时运行
初始化块在每个对象创建时运行
区别是静态块只执行一次,操作的内存在静态区
初始化块每个对象构造时都需要执行一次,操作的内存在用户区
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式