增加整数的int值?
如何在Java中增加Integer的值? 我知道我可以用intValue得到值,我可以用新的整数(int i)来设置它。
playerID.intValue()++;
似乎没有工作。
注意:PlayerID是一个已经被创build的整数:
Integer playerID = new Integer(1);
Integer
对象是不可变的,所以你不能修改它们创build的值。 您将需要创build一个新的Integer
并replace现有的Integer
。
playerID = new Integer(playerID.intValue() + 1);
正如Grodriguez所说, Integer
对象是不可变的。 这里的问题是,你正在尝试增加玩家ID的int
值,而不是ID本身。 在Java 5+中,你可以只写playerID++
。
作为一个方面说明,永远不要调用Integer
的构造函数。 利用自动装箱,直接将int
s赋值给Integer
,如Integer foo = 5
。 这将透明地使用Integer.valueOf(int)
,这比构造函数更好,因为它并不总是需要创build一个新的对象。
整数对象是不可变的。 你不能改变对象本身所拥有的整数的值,但你可以创build一个新的Integer对象来保存结果:
Integer start = new Integer(5); Integer end = start + 5; // end == 10;
对于Java 7,增量运算符“++”在整数上工作。 以下是一个testing的例子
Integer i = new Integer( 12 ); System.out.println(i); //12 i = i++; System.out.println(i); //13
也许这也是值得的:有一个名为AtomicInteger
的Java类(请参阅https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html )。 这个类有一些有用的方法,比如addAndGet(int delta)
或者incrementAndGet()
(以及它们的对应方法),它们允许你增加/减less同一个实例的值。 虽然这个类被devise用于并发的上下文中,但是在其他场景中它也是非常有用的,并且可能适合您的需要。
你可以使用IntHolder作为Integer的可变替代。 但是值得吗?
也许你可以尝试:
final AtomicInteger i = new AtomicInteger(0); i.set(1); i.get();