title: Static block is not being called
body: <p>Who can explain what's going on?</p>
  <pre><code>public class MagicFinal {
  
      public static void main(String[] args) {
          System.out.println(A.s);
      }
  }
  
  class A {
      static {
          System.out.println(&quot;class has been loaded&quot;);
      }
  
      public static final String s = &quot;final&quot;;
  
      public static final Integer i = 3;
      
          
  }
  </code></pre>
  <p><strong>Console :</strong></p>
  <blockquote>
  <p>final</p>
  </blockquote>
  <p>What's it? I don't understand why the class has not been loaded, I know classes always load at the first call. Field <code>s</code> is in pool of string, I see that final modifier is magic.</p>
  <p>If I delete final modifier (<code>public static String s = &quot;final&quot;</code> ) I will get</p>
  <p><strong>Console :</strong></p>
  <blockquote>
  <p>class has been loaded</p>
  <p>final</p>
  </blockquote>
  <p>Note: I have changed field <code>i</code> : <code>public static final int i = 3;</code> and show it in console.
  I got the same as in String situation. Why?</p>