Java的初始化问题和其他高级语言类似。一个明显不一样的地方是体现在它的类加载过程。传统的编程语言包括C++等,程序是作为启动过程的一部分立刻被加载,而Java的类加载只在需要使用程序代码时才会被加载(每个类编译后都在独立的.class文件里)。《Thinkinginjava》把这种“需要”概括为创建第一个对象时或首次访问静态域或静态方法时。Sun公司说类初始化的时机是“initializeonfirstacticeuse”,(在首次主动使用时初始化)。