[此贴子已经被作者于2007-11-12 18:37:52编辑过]
昨天回去看了看。找到原因了。
原因就是final修饰符。
如果final修饰的是基本类型且这个基本类型已经赋了值。那么它就在编译器提前赋值。。那么在运行期就无须初始化而直接使用。此时就不用再加载包含它的类了。。所以K.i只打印一行。即i的值。
而如果final修饰类型为非基本类型,或以表达式赋值。那么它还是在运行期初始化。此时就需要加载包含它的类了。。
在此例中因为属性默认都是static的。所以在加载类的同时,都会初始化。所以K.j才会打印出三行来。