以下のコードでは、StringBuilder のインスタンスは 1 つしかなく、test2 と test3 は実際には元のインスタンスを指しています。new StringBuilder()
StringBuilder test = new StringBuilder("test");
StringBuilder test2;
StringBuilder test3;
test2 = test;
test3 = test2;
したがって、test3 を追加すると、元のテストが追加されます。
String は不変であることは理解していますが、以下のコードを使用してください
String test = new String("test");
String test2;
String test3;
test2=test;
test3=test2;
同じ論理的推論を使用すると、まったく同じように動作するはずですが、 test=test2
test3を変更しても test とは何の関係もありません。StringBuilder のように動作する独自の単純なバイトクラスを作成し、String のように動作するものを作成したいとします等号?私が与えた2つの例の間で test=test2 が論理的に一貫している方法がわかりません。実際、私には予想外に非論理的に見えます。2 つのクラス間で実際にこの違いが生じるのは、どのコード行ですか?test2=new test
test3 = new test2
StringBuilder のインスタンスで等号を使用すると、インスタンスが渡されますが、String のインスタンスで等号を使用すると、魔法のように新しいインスタンスが作成されます。等号がこのようにどのように動作するかを決定するのは、クラスのどのコード行ですか? 実際には等号の意味が変わるので、私はこれが好きではないので、少なくともどのコードが等号の定義を変更するかを知りたいです。