0

以下の2つの方法で整数を宣言することに違いはありますか

Integer Age = 25;
Integer Age = new Integer(25); 
4

4 に答える 4

8

最初の整数は整数プールから供給され、==チェックは true を返します。

        Integer age = 25;
        Integer a = 25;
        System.out.println(a == age);

2 番目のものは毎回新しいオブジェクトを作成し、==チェックは false を返します。

        Integer age = new Integer(25);
        Integer a = new Integer(25);
        System.out.println(a == age);

デフォルトでは -128 -> 127 までの整数のみがキャッシュされるため、次のスニペットも false を返します。プロパティjava.lang.Integer.IntegerCache.highを 127 より大きい値に設定することでこれを微調整でき、true が返されます。

        Integer age = 129;
        Integer a = 129;
        System.out.println(a == age);
于 2013-04-16T11:12:29.133 に答える
1

1 つ目はオートボクシングを使用し、2 つ目は毎回新しいオブジェクトを作成します。キャッシュ内で既に使用可能な場合、Integer クラス内で維持されているローカル キャッシュからフェッチする Integer.valueOf() を使用できる場合に最適です。

于 2013-04-16T11:12:44.210 に答える
0

はい!

重複オブジェクトが作成されるため、この行は絶対に使用しないでください。

Integer Age = new Integer(25); 

次のようなものを使用するのと同じです:

String age = new String("old");
于 2013-04-16T11:12:01.953 に答える
0

両方とも異なります age が参照変数であり、スタックに格納されていることがわかっています 1 行目の 25 はスタックに格納されます 25 は、2 行目で作成されたヒープ u 内のオブジェクトのアドレスであると言えますアドレス位置 25 のヒープ値は整数 25 です

于 2013-04-16T11:17:47.487 に答える