如何在Java中增加Integer的值?我知道我可以使用intValue获取值,也可以使用新的Integer(int i)进行设置。
playerID.intValue()++;
似乎不起作用。
注意:PlayerID是使用以下内容创建的整数:
Integer playerID = new Integer(1);
如何在Java中增加Integer的值?我知道我可以使用intValue获取值,也可以使用新的Integer(int i)进行设置。
playerID.intValue()++;
似乎不起作用。
注意:PlayerID是使用以下内容创建的整数:
Integer playerID = new Integer(1);
Answers:
Integer
对象是不可变的,因此一旦创建它们就无法修改该值。您将需要创建一个新的Integer
并替换现有的。
playerID = new Integer(playerID.intValue() + 1);
Integer.valueOf(int)
……我完全不喜欢在答案中使用不良做法的想法,这可能导致人们认为他们可以做。我还认为,让OP意识到他可以以相同的方式使用与anint
一起使用的操作,这很有用Integer
。
Java 7和8。Increment确实更改了引用,因此它引用了另一个Integer对象。看:
@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);
}
整数本身仍然是不可变的。
++i
功能(在变量上i
;请注意,您也可能写过i++
)和Integer
类的不变性(在变量上iOrig
)。大多数其他答案仅说明了两种概念之一。
AtomicInteger
也许这也很有价值:有一个Java类叫做AtomicInteger
。
此类具有一些有用的方法,例如addAndGet(int delta)
或incrementAndGet()
(及其对应物),可让您递增/递减同一实例的值。尽管该类旨在用于并发上下文,但在其他情况下它也很有用,并且可能满足您的需求。
final AtomicInteger count = new AtomicInteger( 0 ) ;
…
count.incrementAndGet(); // Ignoring the return value.
对于Java 7,增量运算符'++'适用于Integers。以下是经过测试的示例
Integer i = new Integer( 12 );
System.out.println(i); //12
i = i++;
System.out.println(i); //13
i = new Integer(12)
内容仍将引用12
,而不是13
...容易被绊倒
i = i++
与相同i++
。从技术上讲,++
我不会对整数真正起作用,因为如果不将结果分配给某些对象,就不能单独使用它。
所有原始包装器对象都是不可变的。
我可能迟到了这个问题,但是我想补充并说明一下,当您这样做时playerID++
,真正发生的事情是这样的:
playerID = Integer.valueOf( playerID.intValue() + 1);
Integer.valueOf(int)将始终缓存-128至127(包括)范围内的值,并且可能缓存该范围之外的其他值。
playerID++
产生类似的结果playerID = Integer.valueOf( playerID.intValue() + 1)
:此方法将始终缓存-128至127(包括)范围内的值。