Java에서 정수 값을 어떻게 증가합니까? intValue로 값을 얻을 수 있고 new Integer (int i)로 설정할 수 있다는 것을 알고 있습니다.
playerID.intValue()++;
작동하지 않는 것 같습니다.
참고 : PlayerID는 다음으로 생성 된 정수입니다.
Integer playerID = new Integer(1);
Java에서 정수 값을 어떻게 증가합니까? intValue로 값을 얻을 수 있고 new Integer (int i)로 설정할 수 있다는 것을 알고 있습니다.
playerID.intValue()++;
작동하지 않는 것 같습니다.
참고 : PlayerID는 다음으로 생성 된 정수입니다.
Integer playerID = new Integer(1);
답변:
Integer
객체는 변경할 수 없으므로 일단 생성 된 값은 수정할 수 없습니다. 새 항목을 만들고 Integer
기존 항목을 바꿔야합니다.
playerID = new Integer(playerID.intValue() + 1);
Integer.valueOf(int)
... 나는 대답에 나쁜 관행을 사용한다는 생각이 전혀 마음에 들지 않습니다. 나는 또한 영업 이익은 그가와 그가 사용하는 거라고 작업을 사용할 수 있습니다 것을 깨닫게하는 것이 유용하다고 생각 int
와 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
아마도 이것은 가치가있을 것입니다 AtomicInteger
. 라는 Java 클래스가 있습니다.
이 클래스에는 같은 인스턴스의 값을 증가 / 감소시킬 수있는 addAndGet(int delta)
또는 incrementAndGet()
(및 해당 대응)와 같은 유용한 메서드가 있습니다. 이 클래스는 동시성 컨텍스트에서 사용되도록 설계되었지만 다른 시나리오에서도 매우 유용하며 아마도 귀하의 필요에 맞을 것입니다.
final AtomicInteger count = new AtomicInteger( 0 ) ;
…
count.incrementAndGet(); // Ignoring the return value.
Java 7의 경우 증분 연산자 '++'는 정수에서 작동합니다. 아래는 테스트 된 예입니다.
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까지 범위의 값을 캐시합니다.