有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java递增整数的int值?

在Java中如何增加整数的值?我知道我可以用intValue得到值,我可以用新的整数(inti)设置它

playerID.intValue()++;

似乎不起作用

注意:PlayerID是一个整数,它是通过以下方式创建的:

Integer playerID = new Integer(1);

共 (6) 个答案

  1. # 1 楼答案

    AtomicInteger

    也许这也有一些价值:有一个名为^{}的Java类

    这个类有一些有用的方法,比如^{}^{}(及其对应的方法),它们允许您增加/减少同一实例的值。尽管该类设计用于concurrency的上下文,但它在其他场景中也非常有用,可能适合您的需要

    final AtomicInteger count = new AtomicInteger( 0 ) ;
    …
    count.incrementAndGet();  // Ignoring the return value. 
    
  2. # 2 楼答案

    Java7和Java8。增量确实更改了引用,因此它引用了另一个整数对象。看:

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

    整数本身仍然是不可变的

  3. # 3 楼答案

    Integer对象是不可变的,因此一旦创建它们,就不能修改值。您需要创建一个新的Integer并替换现有的

    playerID = new Integer(playerID.intValue() + 1);
    
  4. # 4 楼答案

    正如格罗德里格斯所说,Integer对象是不可变的。这里的问题是您试图增加播放器ID的int值,而不是ID本身。在Java5+中,您只需编写playerID++

    顺便说一句,永远不要调用Integer的构造函数。通过直接将int分配给Integer来利用自动装箱,如Integer foo = 5。这将透明地使用Integer.valueOf(int),这优于构造函数,因为它不必总是创建新对象

  5. # 5 楼答案

    对于Java7,增量运算符“++”处理整数。下面是一个经过测试的示例

        Integer i = new Integer( 12 );
        System.out.println(i); //12
        i = i++;
        System.out.println(i); //13
    
  6. # 6 楼答案

    整数对象是不可变的。您不能更改对象本身保留的整数的值,但可以创建一个新的整数对象来保存结果:

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