mirror of
https://github.com/zhwei820/learn.lianglianglee.com.git
synced 2025-11-17 14:43:43 +08:00
fix img
This commit is contained in:
@@ -313,7 +313,7 @@ b
|
||||
</code></pre>
|
||||
<p>你可以看下这张图。其中 static 字段和 static 代码块,是属于类的,在类的加载的初始化阶段就已经被执行。类信息会被存放在方法区,在同一个类加载器下,这些信息有一份就够了,所以上面的 static 代码块只会执行一次,它对应的是 <clinit> 方法。</p>
|
||||
<p>而对象初始化就不一样了。通常,我们在 new 一个新对象的时候,都会调用它的构造方法,就是 <init>,用来初始化对象的属性。每次新建对象的时候,都会执行。</p>
|
||||
<p><img src="assets/CgqCHl9ZjveAemjoAAB4J1dCVDo17.jpeg" alt="Lark20200910-102602.jpeg" /></p>
|
||||
<p><img src="assets/CgqCHl9ZjveAemjoAAB4J1dCVDo17.jpeg" alt="png" /></p>
|
||||
<p>所以,上面代码的 static 代码块只会执行一次,对象的构造方法执行两次。再加上继承关系的先后原则,不难分析出正确结果。</p>
|
||||
<h3>类加载器</h3>
|
||||
<p>整个类加载过程任务非常繁重,虽然这活儿很累,但总得有人干。类加载器做的就是上面 5 个步骤的事。</p>
|
||||
|
||||
Reference in New Issue
Block a user