未分類

String、heap領域、constant pool

javaのメモリ領域

レジストリ

cpuに存在する領域で、制御できない

stack領域

基本型、参照型が保存される

heap領域

newで生成されたオブジェクト

static領域

staticメンバー

constant pool

コンパイル時に確定され、.classに存在するデータ+ほか

constant poolに生成される

 command
String a1 = "aaa";
String a2 = "aaa";
System.out.println(a1 == a2); // true

1, constant pool領域に"aaa"が生成され、stack領域に"aaa"を指す参照値a1が生成される。

2, constant pool領域に"aaa"が生成され、stack領域に"aaa"を指す参照値a2が生成される。

3, a1, a2とも"aaa"のアドレスが入っているので、trueになる。

 

heap領域に生成される

 command
String a3 = new String("aaa");
String a4 = new String("aaa");
System.out.println(a3 == a4); // false

1, heap領域に"aaa"が生成され、stack領域に"aaa"を指す参照値a3が生成される。

2, heap領域に"aaa"が生成され、stack領域に"aaa"を指す参照値a4が生成される。

3, a3,a4は別々の"aaa"アドレスが入っているので、falseになる。

constant pool, heap領域に生成される

 command
String a5 = "aaa";
String a6 = new String("aaa");
System.out.println(a5 == a6); // false

1, constant pool領域に"aaa"が生成され、stack領域に"aaa"を指す参照値a5が生成される。

2, heap領域に"aaa"が生成され、stack領域に"aaa"を指す参照値a6が生成される。

3, a5,a6は別々の"aaa"アドレスが入っているので、falseになる。

-未分類

© 2026 Suzuki Blog Powered by AFFINGER5