Java の基本型をローカル変数とメンバー変数として格納する方法の違いは何ですか?
世界只因有你
世界只因有你 2017-05-27 17:41:41
0
1
581
####1. この質問には多くの側面が含まれていると思われますが、私自身勉強して一部は理解できましたが、まだ不明な部分もあります。最初にコードを貼り付けます (Java バージョン 1.8):

リーリー

2. まず私が明確に知っている部分についてお話します: 4 番目の出力と 8 番目の出力は比較的明確です。これは、Java ヒープに、よく使用される基本データ型リテラルを格納する定数プールがあり、この定数プールには整数 (-128 ~ 127) とブール型 (double 型は不可) を格納できるためです。 「Integer abd1=127」を実行すると、値 127 の Integer オブジェクトがヒープに作成されるだけでなく、対応する定数プールに 127 が格納され、この Integer オブジェクトが定数プールの 127 に関連付けられます。 「Integer abf1=127」を実行すると、オブジェクトの作成に加えて、定数プール内の 127 にも関連付けられるため、2 つを比較すると true が返されます。 128 は異なりますが、定数プールの格納範囲を超えているため、2 つの整数参照 i1 と i2 のみが比較されるため、false が返されます。

3. 私の質問は、オブジェクトのメンバー変数に int 型 (非静的、非最終) を格納する方法です。つまり、Text オブジェクト t が作成されたとき、abc1 (これと同様の abc2) はスタックに直接格納されるのか、それともパッケージ化されてヒープに格納されるのか? 1 ~ 3 (または 5 ~ 7) が表示されるのはなぜですか? 戻り値は "真、偽、真」の状況。

世界只因有你
世界只因有你

全員に返信(1)
给我你的怀抱

int と Integer を比較する場合、Integer は自動的にボックス化されず、int と比較されます。
2 番目のオブジェクトのインスタンス変数はヒープ上に割り当てられます。
Integer 型は自動的にボックス化されないため、1 と 5 が比較されます。
new Integer(xxx) xxx もスコープ内に作成されるため、2 は false です

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート