title: Why new keyword not needed for String
body: <p>I am new in java.</p>
  
  <p>In java, <code>String</code> is a <code>class</code>.But 
  we do not have to use <code>new</code> keyword to create an object of class <code>String</code> where as <code>new</code> is used for creating objects for other classes.</p>
  
  <p>I have heard about Wrapper classes like <code>Integer</code>,<code>Double</code> which are similar to this.
  But <code>String</code> is not Wrapper,isn't it?</p>
  
  <p>Actually what is happening when i use</p>
  
  <pre><code>     String message = "Hai";
  </code></pre>
  
  <p>??
  How it is different from </p>
  
  <pre><code>String message = new String("Hai");
  </code></pre>
  
  <p>Here is <code>message</code> a reference variable or something else??
  Are there other classes which do not require <code>new</code> to create object ??</p>