I always thought that class loading and class initialization are synonymous and usually happens on demand when the class being initialized/loaded is used in some way or the other for the first time. But now I know from this answer on SO regarding the behavior of final static fileds that holds compile time constants that my belief is wrong.
Please note the following which makes it quite clear that class loading and initialization are two different mechanism.
As a side point, please note the distinction between class loading and class initialization: only the latter's occurrence is precisely specified by the JLS. Class loading can happen at any time.
But can someone please explain the difference between class loading and class initialization in Java language. Normally intuition says that initialization should always be preceded by loading but I am be completely wrong. Can initialization ever happen without a class getting loaded?