Programing

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

lottogame 2020. 10. 21. 07:39
반응형

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

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


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

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

아마도 이것도 가치가있을 것입니다 :라는 Java 클래스가 있습니다 AtomicInteger( https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html 참조 ). 이 클래스에는 동일한 인스턴스의 값을 증가 / 감소시킬 수있는 addAndGet(int delta)또는 incrementAndGet()(및 해당 대응)와 같은 유용한 메소드가 있습니다. 이 클래스는 동시성 컨텍스트에서 사용되도록 설계되었지만 다른 시나리오에서도 매우 유용하며 아마도 귀하의 필요에 맞을 것입니다.


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

IntHolder를 Integer의 변경 가능한 대안으로 사용할 수 있습니다. 그러나 그만한 가치가 있습니까?


모든 기본 래퍼 객체는 변경할 수 없습니다.

나는 질문에 늦었을 수도 있지만 할 때 playerID++실제로 일어나는 일은 다음과 같다는 것을 추가하고 명확히하고 싶습니다.

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

보시다시피 새로운 Integer 객체가 생성됩니다.

참고 URL : https://stackoverflow.com/questions/3815173/increment-a-integers-int-value

반응형