title: string instantiation vs stringbuffer instantiation
body: <p>I am not able to figure out that if</p>
  
  <pre><code>String ab = "hello";        //straight initialization
  
  String ab_1 = new String ("hello_1");  //initializing using new
  </code></pre>
  
  <p>both work, but </p>
  
  <pre><code>StringBuffer bfr = new StringBuffer("hi");   //works only with new
  </code></pre>
  
  <p>works only if created with new.    </p>
  
  <p>Why it is that String can be instantiated directly but StringBuffer needs new operator. Can someone explain me the main reason please.</p>