はい、できます。Java は文字列プールを使用します。したがって、次のようにします。
String str = "abc";
str = "def";
str = "abc";
str
最初から元の「abc」を指すようになりました。
ただし、String を使用する場合は、String のメソッドをnew
呼び出すことで強制的に同じにすることができます。intern
このメソッドは、返された文字列がメモリ内の共有文字列プールにあることを保証します。
String str1 = new String("abc").intern();
String str2 = new String("abc").intern();
これはstr1 == str2
、同じ String オブジェクトを指していることを意味します。
割り当てを元に戻すことができるかどうかという質問に答えるには:いいえ. あなたの質問は文字列に関するものでしたが、同じ考えがすべてに当てはまります。
int k = 4;
k = 9;
// now reverting to the "previous value" is impossible without hardcoding 4 again
k = 4;
Strings を使っていると違うと思うかもしれませんが、そうではありません。唯一の違いは、Stringオブジェクト はメモリ内のどこかにあり、int はメモリ内で 4 バイトしかないことです。