String a = "test";
String b = "whatever";
String c= "test";
System.out.println(a == c); //true
文字列は不変であり、したがってこれらの文字列は同一であるため、これは true を出力すると想定しているため、Java はメモリ内の の場所 c
を指します。a
String a = "test";
String b = "whatever";
String c= new String("test");
System.out.println(a == c); //false
new
演算子を呼び出すことによって、Java は新しいメモリを割り当てる必要があるため、 a
.
私の質問は:
String d="a";
d="rbf";
d="ergfbrhfb";
d="erhfb3ewdbr";
d="rgfb";
//...
- への中間割り当てのメモリ割り当てに関して何が起こってい
d
ますか? - 後続の割り当てが同じ文字数の場合、この答えは変わりますか? (つまり、
d="abc"; d="rfb";
) - への変更ごとに新しいメモリが割り当てられてい
d
ますか? - その場合、各割り当てに割り当てられたメモリが再び解放されるのはいつですか?