可能性のある複製:
ストリングおよびファイナル
http://docs.Oracle.com/javase/6/docs/api/Java/lang/String.html 私はそれを読むことができます:
Strings are constant; their values cannot be changed after they are created.
これは、final String
は、Javaでfinal
属性が何らかの形で冗長であるという意味で、実際には意味がありませんか?
String
オブジェクトは不変ですが、実際には、変更可能なString
オブジェクトへの参照です。
例えば:
String someString = "Lala";
この変数が保持する値を再割り当てできます(別の文字列を参照させるため)。
someString = "asdf";
ただし、これでは:
final String someString = "Lala";
その場合、上記の再割り当ては不可能になり、コンパイル時エラーが発生します。
final
はオブジェクトではなく変数を参照するため、はい、意味があります。
例えば.
final String s = "s";
s = "a"; // illegal
それは理にかなっている。 final
キーワードは、変数への将来の割り当てを防ぎます。以下はJavaのエラーです。
final String x = "foo";
x = "bar" // error on this assignment
参照は最終的なものですが、オブジェクトはそうではありません。変更可能なオブジェクトを最終オブジェクトとして定義し、その状態を変更できます。最後に確認することは、使用している参照が別のオブジェクトを再び指すことはできないということです。