Invoking a method on a static object in Java evaluates some incorrect value
<p>The following simple program retrieves the current year <strong>(2011)</strong> from the system and then simply subtracts <strong>1950</strong> from the current year.</p>

<pre><code>package calculation;

import java.util.Calendar;

final public class Main
{
    private static final Main INSTANCE = new Main();
    private static final int CURRENT_YEAR = Calendar.getInstance().get(Calendar.YEAR);
    private final int beltSize=CURRENT_YEAR - 1950;

    private int beltSize()
    {
        return beltSize;
    }
    public static void main(String[] args)
    {
        Main  main=new Main();
        System.out.println("Wears a size " + main.beltSize() + " belt.");
        System.out.println("Wears a size " + INSTANCE.beltSize() + " belt.");
    }
}
</code></pre>

<hr>

<p>The following statement from the code above returns a correct value.</p>

<pre><code>Main  main=new Main();

System.out.println("Wears a size " + main.beltSize() + " belt.");
</code></pre>

<p>It invokes the <strong>beltSize()</strong> method which returns correctly the evaluation of CURRENT_YEAR - 1950 which is <strong>61</strong>.</p>

<hr>

<pre><code>private static final Main INSTANCE = new Main();

System.out.println("Wears a size " + INSTANCE.beltSize() + " belt.");
</code></pre>

<p>The above statement invokes the same method <strong>beltSize()</strong> using the <strong>static final</strong> object INSTANCE which is a class member and it returns incorrectly <strong>-1950 (negative)</strong> rather than the correct value of 61. Why?</p>
