title: Is "new String()" immutable as well?
body: <p>I've been studying Java String for a while. The following questions are based on the below posts  </p>
  
  <p><a href="http://www.ntu.edu.sg/home/ehchua/programming/java/J3d_String.html" rel="nofollow noreferrer">Java String is special</a><br>
  <a href="https://stackoverflow.com/questions/1552301/immutability-of-strings-in-java">Immutability of String in java</a>  </p>
  
  <ol>
  <li><p>Immutability: 
  Now, going by the immutability, the String class has been designed so that the values in the <em>common pool</em> can be reused in other places/variables. This holds good if the <code>String</code> was created as  </p>
  
  <p><code>String a = "Hello World!";</code>
   However, if I create String like  </p>
  
  <p><code>String b = new String("Hello World!");</code>
  why is this immutable as well? (or is it?). Since this has a dedicated heap memory, I should be able to modify this without affecting any other variable. So by design, was there any other reason why <code>String</code> as a whole is considered immutable? Or is my above assumption wrong?</p></li>
  <li><p>Second thing I wanted to ask was about the <em>common string pool</em>. If I create a string object as  </p>
  
  <p><code>String c = "";</code>
  is an empty entry created in the pool?</p></li>
  </ol>
  
  <p>Is there any post already on these? If so, could someone share the link?  </p>