ThinkingInJava Exercise7_18

创建一个static final域和final域的类,说明二者间的区别。


ThinkingInJava Exercise7_18_第1张图片

首先,main方法在类Difference中,所以在进入main之前JVM会先加载Difference类。

类加载时,其静态变量sft就会初始化,此时Test的构造器会被调用。而且静态变量只会初始化一次。

是所有实例对象共有的,即使以后通过类或实例对象用到它,也不会再初始化。

当运行到Difference d1 = new Difference("d1"); 实例对象有一个属性ft,ft要初始化,此时Test的构造器会被调用。

由于ft不是静态的,所以每new 一个Difference,都要初始化一次。

你可能感兴趣的:(ThinkingInJava Exercise7_18)