例子如下:




























输出结果如下:
################################################################################
第1次
staticNum=0
num=1第2次
staticNum=1
num=1
###############################################################################
这了例子我一时也很难弄明白,了解多少就说多少吧。
首先看 staticNum=0 这个输出结果。这说明,当生成静态对象t时,静态变量staticNum只是声明而没有初
始化,即没分配内存空间(如果没声明,在调用时就会出现错误而无法通过编译的)。
不过,如果将 public static int staticNum = 1 放在 public static testclass t = new
testclass() 之前,如下:




则输出结果就变成了:
###########################################################################
第1次
staticNum=1
num=1第2次
staticNum=1
num=1
###############################################################################
这时候的静态变量staticNum就不仅声明而且经过初始化了。
具体原理可能要涉及到类的编译,等我理清楚了再继续写。