title: Are Java wrapper classes really immutable?
body: <p>Java Wrapper classes are supposed to be immutable. This means that once an object is being created, e.g., </p>
  
  <pre><code>Integer i = new Integer(5);
  </code></pre>
  
  <p>its value cannot be changed. However, doing </p>
  
  <pre><code>i = 6;
  </code></pre>
  
  <p>is perfectly valid. </p>
  
  <p>So, what does immutability in this context mean?
  Does this have to do with auto-boxing/unboxing? 
  If so, is there any way to prevent the compiler from doing it?</p>
  
  <p>Thank you</p>