title: java final and ragged arrays
body: <p>why is this code working?</p>
  
  <pre><code>public class Final {
      public final int[][] arr = new int[2][];
      Final(){
          arr[0] = new int[4];
          arr[0] = new int[5];
          arr[1] = new int[4];
          }
      public static void main(String[] args) {
          Final fi = new Final();
          System.out.println(fi.arr[0].length);
          System.out.println(fi.arr[1].length);
      }
  }
  </code></pre>
  
  <p>whereas the following does <em>not</em> work (which is correct as I assume).</p>
  
  <pre><code>public class Final {
      public final int[] arr;
      Final(){
          arr = new int[4];
          arr = new int[5];
          }
      public static void main(String[] args) {
          Final fi = new Final();
          System.out.println(fi.arr.length);
      }
  }
  </code></pre>
  
  <p>When is the <code>final</code> statement "kicking in" ?</p>