String class implements immutable character strings
String is immutable. String keeps an array of characters which is mutable as any other array. But String don't have a method to modify this array and restrict subclassing String class by declaring the class final.
The interface String implements is CharSequence which is not mandating the implementor should be immutable.