Immutable means that the object value can not be changed.
It has no mutator methods, which in Java traditionally starts with set.
Any methods in the String class that alter the current String, returns a reference to a new String. It seems wasteful to me to have all that overhead, but if your program needs to make a lot of changes StringBuffer is mutable.
I am not sure why they decided on this, but they were determined to keep it immutable so they made the class final as well.
"Computer science is no more about computers than astronomy is about telescopes" - Edsger Dijkstra