1

たとえば、次の場合:

String str1 = “abc”;
String str2 = new String(“def”);

それで、

ケース 1 :String str3 = str1.concat(str2)ヒープまたはプールに入れますか?

ケース 2 :String str4 = str2.concat(“HI”)ヒープまたはプールに入れますか?

4

2 に答える 2

0

最初の構文(String str1 = "abc";)では、String オブジェクトが 1 つだけ作成され、それを指す 1 つの参照変数が作成されます。オブジェクトは、JVM によって維持される String 定数プールに作成されます。2 番目のケースString str2 = new String("def");では、2 つの String オブジェクトが作成されます。new が呼び出されるため、通常のメモリに 1 つの String オブジェクトが作成されます。また、文字列定数「newstring」が文字列定数プールに配置されます。

したがって、New Keyword がない場合は、String 定数プールに 1 つの String オブジェクトが作成されるだけです。

于 2014-10-29T23:22:14.490 に答える
0

Java では、 new キーワードを使用して作成した文字列はヒープ メモリに作成されます。new を使用せずに文字列を作成すると、文字列プールに作成され、文字列定数として呼び出されます。String 定数プール値のコピーは 1 つだけです。これは、String プールに重複が存在しないことを意味します。

于 2014-10-13T17:56:15.470 に答える