Incrémenter la valeur int d’un entier?

Comment puis-je incrémenter la valeur d’un entier dans Java? Je sais que je peux obtenir la valeur avec intValue, et je peux le définir avec un nouvel entier (int i).

playerID.intValue()++; 

ne semble pas fonctionner.

Remarque: PlayerID est un entier qui a été créé avec:

 Integer playerID = new Integer(1); 

Integer objects Integer sont immuables, vous ne pouvez donc pas modifier la valeur une fois qu’ils ont été créés. Vous devrez créer un nouveau Integer et remplacer celui existant.

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

Comme le dit Grodriguez, les objects Integer sont immuables. Le problème est que vous essayez d’incrémenter la valeur int de l’ID du lecteur plutôt que l’ID lui-même. Dans Java 5+, vous pouvez simplement écrire playerID++ .

Comme remarque secondaire, n’appelez jamais le constructeur d’ Integer . Profitez de la mise en forme automatique en affectant directement les s à Integer s, comme Integer foo = 5 . Cela utilisera Integer.valueOf(int) transparente, ce qui est supérieur au constructeur car il ne doit pas toujours créer un nouvel object.

Les objects entiers sont immuables. Vous ne pouvez pas changer la valeur de l’entier détenu par l’object lui-même, mais vous pouvez simplement créer un nouvel object Integer pour contenir le résultat:

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

Peut-être est-ce utile: il existe une classe Java appelée AtomicInteger (voir https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html ). Cette classe a quelques méthodes utiles comme addAndGet(int delta) ou incrementAndGet() et leurs homologues) qui vous permettent d’incrémenter / décrémenter la valeur de la même instance. Bien que la classe soit conçue pour être utilisée dans un contexte de concurrence, elle est également très utile dans d’autres scénarios et correspond probablement à votre besoin.

Pour Java 7, incrémentez l’opérateur ‘++’ fonctionne sur les entiers. Voici un exemple testé

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

Java 7 et 8. Incrément Modifie la référence, il fait donc référence à un autre object Integer. Regardez:

 @Test public void incInteger() { Integer i = 5; Integer iOrig = i; ++i; // Same as i = i + 1; Assert.assertEquals(6, i.intValue()); Assert.assertNotEquals(iOrig, i); } 

Integer en soi est toujours immuable.

Vous pouvez utiliser IntHolder comme alternative mutable à Integer. Mais ça vaut la peine?

Peut-être que vous pouvez essayer:

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