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와 같이 int
s를 Integer
s에 직접 할당하여 오토 박싱을 활용하십시오 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();