[java] Integer의 int 값을 늘리시겠습니까?

Java에서 정수 값을 어떻게 증가합니까? intValue로 값을 얻을 수 있고 new Integer (int i)로 설정할 수 있다는 것을 알고 있습니다.

playerID.intValue()++;

작동하지 않는 것 같습니다.

참고 : PlayerID는 다음으로 생성 된 정수입니다.

Integer playerID = new Integer(1);



답변

Integer객체는 변경할 수 없으므로 일단 생성 된 값은 수정할 수 없습니다. 새 항목을 만들고 Integer기존 항목을 바꿔야합니다.

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


답변

Grodriguez가 말했듯이 Integer객체는 불변입니다. 여기서 문제 int는 ID 자체가 아니라 플레이어 ID 의 값 을 증가 시키려고한다는 것입니다. Java 5+에서는 playerID++.

참고로 Integer의 생성자를 절대 호출하지 마십시오 . s와 같이 ints를 Integers에 직접 할당하여 오토 박싱을 활용하십시오 Integer foo = 5. 이것은 Integer.valueOf(int)항상 새로운 객체를 생성 할 필요가 없기 때문에 생성자보다 우수합니다.


답변

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

정수 자체는 여전히 변경 불가능합니다.


답변

AtomicInteger

아마도 이것은 가치가있을 것입니다 AtomicInteger. 라는 Java 클래스가 있습니다.

이 클래스에는 같은 인스턴스의 값을 증가 / 감소시킬 수있는 addAndGet(int delta)또는 incrementAndGet()(및 해당 대응)와 같은 유용한 메서드가 있습니다. 이 클래스는 동시성 컨텍스트에서 사용되도록 설계되었지만 다른 시나리오에서도 매우 유용하며 아마도 귀하의 필요에 맞을 것입니다.

final AtomicInteger count = new AtomicInteger( 0 ) ;
…
count.incrementAndGet();  // Ignoring the return value. 


답변

정수 객체는 변경할 수 없습니다. 객체 자체가 보유한 정수의 값은 변경할 수 없지만 결과를 보유 할 새 Integer 객체를 만들 수 있습니다.

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


답변

Java 7의 경우 증분 연산자 ‘++’는 정수에서 작동합니다. 아래는 테스트 된 예입니다.

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


답변

시도해 볼 수 있습니다.

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