看结果又什么疑问吗?我说下这个执行的顺序,你参考下
当你执行java StaticCodeDemo时,这个类被加载到内存中,按顺序执行Static{}中的代码->
然后执行main方法->接着你建立两个StaticCode对象,此时StaticCode类的static{}在第一次对象被创建时执行,以后不再执行,{}中的代码每建立一个对象,执行一次
接着你又创建了 StaticCodeDemo对象,所以接着执行这个{}中的代码->,最后执行剩下的语句.
所以你去掉new StaticCodeDemo()只是少了 System.out.println("StaticCodeDemo代码块"); 这个结果
你这个实验没有加构造函数.如果有的话,构造函数是排在{}代码块之后的,相当于每个对象共同操作.
|