title: Why instance variables get initialized before constructor called?
body: <p>I have this following piece of code:</p>
  
  <pre><code>public abstract class UCMService{
      private String service;     
  
      protected DataMap dataMap = new DataMap(); 
  
      protected class DataMap extends HashMap&lt;String,String&gt; {
  
          private static final long serialVersionUID = 4014308857539190977L;
  
          public DataMap(){
              System.out.println("11111");
              put("IdcService",service);
          }
      }
  
      public UCMService(String service){
          System.out.println("2222");
          this.service = service;
      }
  }
  </code></pre>
  
  <p>Now in console the <code>System.out.println</code> of <code>DataMap</code> constructor is executing before the constructor of <code>UCMService</code>.</p>
  
  <p>I was wondering why it is happening.</p>