2

Java とメモリ管理について考えていたのですが、よくわからないことがあります。

ラッパークラス Integer を使用して int 型をオブジェクトとして表現しているとしましょう

2 つのオブジェクトを作成します

整数 x = 1; 整数 y = 1:

私の質問は、Java が 2 つの異なるメモリ位置に 2 つの同一のオブジェクトを作成し、それらを x と y で参照するかどうかです。それとも、1 つのオブジェクトのみを作成し、両方の参照を使用してその 1 つのオブジェクトを指すのでしょうか?

また、オブジェクトがJavaのメモリに格納されている場所を見つける方法はありますか?

4

3 に答える 3

0

コンパイラは通常、そのような最適化を探し、Copy on Write を適用します http://en.wikipedia.org/wiki/Copy-on-write

2つの文字列が次のように定義されているため、文字列で確認できます

String x = "test";
String y = "test":

このように比較されます

if (x == y) 

それ以外の場合は.equals、比較する必要があります。

例えば

public class test
{
  public static void main(String[] args){
    String x = "test";
    String y = "test";
    if (x == y){
      System.out.print("Same object");
    }
  }
}

その後、実行中

$ java test 
Same object
于 2013-11-05T11:35:50.270 に答える