I recommand you visit and read this link.
In short: K.j actually is J.j and trying to use J.j invokes iniitialization of interface J.
During initialization, both J.j and J.jj should be initialized, so both j=3 and jj=4 are printed.
The reference to J.i is to a field that is a compile-time constant; therefore, it does not cause I to be initialized. The reference to K.j is a reference to a field actually declared in interface J that is not a compile-time constant; this causes initialization of the fields of interface J, but not those of its superinterface I, nor those of interface K. Despite the fact that the name K is used to refer to field j of interface J, interface K is not initialized.
enough information . Study twice,if you not understand .
Moreover, I think referring JLS gives the most clear answer.