variable tipos tipo objeto ejemplos ejemplo datos dato java class integer int

java - tipos - Incrementar el valor int de un entero?



tipos de variables en java netbeans (8)

Como dice Grodriguez, los objetos Integer son inmutables. El problema aquí es que estás tratando de incrementar el valor int de la ID del jugador en lugar de la propia ID. En Java 5+, puedes simplemente escribir playerID++ .

Como nota al margen, nunca llame al constructor de Integer . Aproveche el autoboxing simplemente asignando int s a Integer s directamente, como Integer foo = 5 . Esto utilizará Integer.valueOf(int) transparente, que es superior al constructor porque no siempre tiene que crear un nuevo objeto.

¿Cómo incremento el valor de un Entero en Java? Sé que puedo obtener el valor con intValue, y puedo configurarlo con el nuevo Integer (int i).

playerID.intValue()++;

no parece funcionar

Nota: PlayerID es un Integer que se ha creado con:

Integer playerID = new Integer(1);


Java 7 y 8. Incremente SÍ cambia la referencia, por lo que hace referencia a otro objeto entero. Mira:

@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); }

El entero en sí mismo todavía es inmutable.


Los objetos enteros son inmutables. No puede cambiar el valor del entero en poder del objeto en sí, pero puede simplemente crear un nuevo objeto Integer para contener el resultado:

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


Para Java 7, el operador de incremento ''++'' funciona en enteros. A continuación se muestra un ejemplo probado

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


Puede usar IntHolder como alternativa mutable a Integer. Pero, ¿vale la pena?


Quizás esto sea de alguna AtomicInteger también: hay una clase Java llamada AtomicInteger (ver https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html ). Esta clase tiene algunos métodos útiles como addAndGet(int delta) o incrementAndGet() (y sus contrapartes) que le permiten incrementar / disminuir el valor de la misma instancia. Aunque la clase está diseñada para usarse en el contexto de concurrencia, también es bastante útil en otros escenarios y probablemente se ajuste a sus necesidades.


Tal vez puedas probar:

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


Integer objetos Integer son inmutables, por lo que no puede modificar el valor una vez que se han creado. Tendrá que crear un nuevo Integer y reemplazar el existente.

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