那两段for初始化语句不包含在类的任何方法体中,也不是属于由static { }来声明的static initializer,这种语句在Java中是不合法的。
其实概念很简单,这几句代码什么时候执行?看上去你是想在产生一个类的实例的时候,那么把这两段放在类的构造函数中就是了,否则如果有第二个实例产生的时候,你的代码产生的东西是算谁的呢?如果放在static{} 之中,那么产生的东西是属于整个类的,任何类实例访问的均是相同的东西也行,但是可以这样初始化的类属性本身也必须由static来声明才可以。