Wil*_*iam 75 java int integer class
如何在Java中增加Integer的值?我知道我可以用intValue获取值,我可以用新的Integer(int i)设置它.
playerID.intValue()++;
Run Code Online (Sandbox Code Playgroud)
似乎不起作用.
注意:PlayerID是一个用以下内容创建的Integer:
Integer playerID = new Integer(1);
Run Code Online (Sandbox Code Playgroud)
Gro*_*uez 92
Integer对象是不可变的,因此一旦创建了它们就无法修改它们.您需要创建一个新的Integer并替换现有的.
playerID = new Integer(playerID.intValue() + 1);
Run Code Online (Sandbox Code Playgroud)
Col*_*inD 48
正如格罗德里格斯所说,Integer物体是不可改变的.这里的问题是你试图增加int玩家ID 的值而不是ID本身.在Java 5+中,您可以编写playerID++.
作为旁注,永远不要打电话给Integer构造函数.只需将s直接分配给ints ,就可以利用自动装箱.这将透明地使用,它优于构造函数,因为它并不总是必须创建一个新对象.IntegerInteger foo = 5Integer.valueOf(int)
vit*_*lkv 12
Java 7和8.增量DOES更改引用,因此它引用另一个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);
}
Run Code Online (Sandbox Code Playgroud)
整数本身仍然是不可变的.
也许这也有一些价值:有一个叫做的Java类AtomicInteger(参见https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html).这个类有一些有用的方法,比如AtomicInteger或addAndGet(int delta)(和它们的对应物)允许你增加/减少同一个实例的值.尽管该类设计用于并发环境,但它在其他场景中也非常有用,可能符合您的需要.
整数对象是不可变的.您不能更改对象本身持有的整数的值,但您可以创建一个新的Integer对象来保存结果:
Integer start = new Integer(5);
Integer end = start + 5; // end == 10;
Run Code Online (Sandbox Code Playgroud)
对于Java 7,增量运算符'++'适用于整数.以下是经过测试的示例
Integer i = new Integer( 12 );
System.out.println(i); //12
i = i++;
System.out.println(i); //13
Run Code Online (Sandbox Code Playgroud)
也许你可以尝试:
final AtomicInteger i = new AtomicInteger(0);
i.set(1);
i.get();
Run Code Online (Sandbox Code Playgroud)