title: Does use of final keyword in Java improve the performance?
body: <p>In Java we see lots of places where the <code>final</code> keyword can be used but its use is uncommon. </p>
  
  <p>For example:</p>
  
  <pre><code>String str = "abc";
  System.out.println(str);
  </code></pre>
  
  <p>In the above case, <code>str</code> can be <code>final</code> but this is commonly left off. </p>
  
  <p>When a method is never going to be overridden we can use final keyword. Similarly in case of a class which is not going to be inherited.</p>
  
  <p>Does the use of final keyword in any or all of these cases really improve performance? If so, then how? Please explain. If the proper use of <code>final</code> really matters for performance, what habits should a Java programmer develop to make best use of the keyword?</p>