1.設計需求
java設計者不希望用戶定義類去繼承String類,所以定義爲final類型。final修飾類時,類不可被繼承;修飾變量,變量的值不可以被修改;修飾方法,方法不可被子類重寫。做這樣的規則規定,爲了代碼更嚴謹
2.性能需求
String類中的成員屬性也幾乎都設計成了private final的,這樣String就被設計成一個不變類,這樣有助於共享,提高性能。可以將字符串對象保存在字符串常量池中以供與字面值相同字符串對象共享。如果String對象是可變的,那就不能這樣共享,因爲一旦對某一個String類型變量引用的對象值改變,將同時改變一起共享字符串對象的其他String類型變量所引用的對象的值。
3.安全方面的考慮
Java設計出於安全性的考慮,不變的數據對於線程安全是有用的。