java 違い 整数の int 値を増分しますか?




java integer 足し算 (7)

JavaでIntegerの値を増やすにはどうすればよいですか? 私はintValueで値を取得でき、新しいInteger(int i)で設定できることを知っています。

playerID.intValue()++;

動作していないようです。

注:PlayerIDは、以下で作成されたIntegerです。

Integer playerID = new Integer(1);

Integerオブジェクトは不変なので、作成された値は変更できません。 新しいIntegerを作成し、既存のIntegerを置き換える必要があります。

playerID = new Integer(playerID.intValue() + 1);

Grodriguez氏によると、 Integerオブジェクトは不変です。 ここでの問題は、ID自体ではなくプレーヤーIDのint値をインクリメントしようとしていることです。 Java 5+では、 playerID++書くことができplayerID++

補足として、 Integerのコンストラクタを決して呼び出してはいけません。 Integer foo = 5ように、 Integer foo = 5直接Integer代入するだけで自動ボクシングを利用できます。 Integer.valueOf(int)透過的に使用されInteger.valueOf(int) 。これは、常に新しいオブジェクトを作成する必要がないため、コンストラクタより優れています。


AtomicIntegerと呼ばれるJavaクラスがあります( https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html参照)。 このクラスには、同じインスタンスの値を増減できるaddAndGet(int delta)incrementAndGet() (およびそれに対応する)などの便利なメソッドがいくつかあります。 クラスは並行処理のコンテキストで使用するように設計されていますが、他のシナリオでも非常に便利で、おそらく必要に応じています。


整数オブジェクトは不変です。 オブジェクト自体が保持する整数の値は変更できませんが、新しいIntegerオブジェクトを作成して結果を保持するだけで済みます。

Integer start = new Integer(5);
Integer end = start + 5; // end == 10;

IntHolderはIntegerの代わりに使用できます。 しかし、それは価値がありますか?


Java 7の場合、インクリメント演算子 '++'はIntegerで機能します。 以下はテスト済みの例です

    Integer i = new Integer( 12 );
    System.out.println(i); //12
    i = i++;
    System.out.println(i); //13

たぶんあなたが試すことができます:

final AtomicInteger i = new AtomicInteger(0);
i.set(1);
i.get();




int