-2

私は次のようなものを持っているとしましょう

 int a = 100;
 int b = 100;
 Integer c = (Integer) a;
 Integer d = (Integer) b;

c == d結果は true になります。これは、オブジェクト c と d がメモリ内の同じオブジェクトを指していることを意味しますか?

ここで誰かが光を当てることができますか?

ここで 2 つのオブジェクト c と d を作成しますか? それらは異なるオブジェクトですか、それとも同じですか? ==それらは同じオブジェクトであると教えてくれます。

また、キャストによって新しいオブジェクトが作成されないこともどこかで読みました。これは、同じオブジェクトを表す方法にすぎません。オブジェクトを整数にキャストしようとしている場合、それは理にかなっています。

しかし、以前は図にオブジェクトがなく (プリミティブしかなかった)、ここでオブジェクトを作成しようとしている場合はcどうdでしょうか?

4

1 に答える 1

0

オートボクシングはキャストなしで機能します。参照の等価性が表示される理由は、オートボクシングが内部的Integer.valueOf()に特定の値をキャッシュする呼び出しを行うためです。

このメソッドは常に -128 から 127 までの範囲の値をキャッシュしますが、この範囲外の値をキャッシュすることもあります。

于 2016-05-03T23:47:29.527 に答える