2013-10-09 2 views

답변

5

네, 반복 할 때마다 자동 언 박싱 및 자동 복싱이 필요합니다. 그것은 똑같은 방식으로 작동 할 것이고, 당신은 을 할 필요가 없습니다. 무엇이든 작동하도록 만들지 만 불필요하며 쉽게 피할 수 있습니다.

또한 약간 진짜 장점에 대한 루프를 느리게 수 있습니다. 당신이 실제로 필요 수있을 때

은 기본적으로 Integer는 오직 사용되어야한다 Object (당신이 null이 유효한 값 때, 콜렉션에 넣어 ... 예를 들면). 다른 모든 시간에는 가능하면 기본 유형을 사용해야합니다 (int, char, ...).

1

아니요 작동에 차이가 없습니다. 자동 권투 및 자동 언 박싱 기능은 i++ 루프에서 수행합니다.

3

intInteger의 차이점을 이미 알고 있다고 가정합니다.
루프는 동일하게 동작하지만 Integer이 필요하지 않은 경우 int을 사용하는 것이 좋습니다. 그러지 마라, 시간 낭비 ("i"를 대문자로 쓰고 "eger"를 추가) :). 또한 각 반복마다 auto-unboxing/auto-boxing이 완료되므로 효율적이지 않습니다.

사용 int 당신이 Integer없이 살 수

.

2

유일한 큰 일이 같은 시나리오에서 사용하는 방법에 대해 내가 생각할 수있는 (나는 그것을 할 것이지만 자신이 & 중 하나 그렇게하도록 조언하지 않습니다는) 나는 이것보다

for (Integer i = 0; i < 100 ; i++) { 
    i = null; // Can do this here but not in the other loop 
    // Obviously this is not going to be the only line here, unless you wanna get a NPE 
    // Just something, which you COULD DO 
} 

다른입니다 그 것이 많이 중요하게 될지 정말로 의심 스럽습니다. int을 사용하는 것이 좋습니다. 또한, 모든 반복에 대한 복싱 및 자동 권투는 좋은 일이 아닙니다 (그냥 int을 직접 사용할 수있는 경우).

+4

관심이 있으신가요? 'i'가'null' 일 때'i ++'하면 어떻게됩니까? NullPointerException을 throw하지 않습니까? – Bathsheba

+0

@ Bathsheba 3 글자 ... NPE – codeMan

+0

@ Bathsheba - 나는 우리가 그렇게 할 수 있다고 말했다. 루프 블록에서 유일한 코드 일 것이라고는 말하지 않았습니다. null로 만들 수 있고, null인지 아닌지 확인하고, 다른 작업을 수행하고 값을 다시 할당 할 수 있습니다. – SudoRahul

3

나는 항상 때 지금 내가 할 수있는, 래퍼를 통해 기본 선택합니다.

코드는 잘 작동합니다. 우리가 래퍼 Boxing conversions 사용 Unboxing Conversions가 런타임에 발생하면

는하지만, 아주 사소한 차이가 있지만,

는 실행 시간 동안, 분명히 그 시간이 더 걸립니다.

p는 int 타입의 값이있는 경우에는, 다음 복싱 변환 정수, 클래스의 기준 R로 P 변환하고 입력되도록 r.intValue() == P

반대로 Primitives을 사용하는 경우이 시간이 저장됩니다.

-1

아니요. Integer은 프리미티브 int 유형에 일부 기능을 추가하는 래퍼입니다. 해당 기능을 사용하지 않으려면 int을 사용하는 것이 좋습니다. 이 차이를 많이 만들 수 있지만 사용했다 가정하지 않을 수 있습니다이 경우

는 youd가 메모리와 속도를 많이 낭비 될 Integer[] 대신 int[] 말한다.

+5

'ArrayList '는 Java에서 작동하지 않습니다! –

+0

서두르다. 수정 됨. – Aneesh

2

Integer을 사용하면 복싱으로 인해 성능이 저하되므로 int을 사용하십시오.

그러나 루프 바디에 i을 사용하려는 경우 해시 맵 키를 사용하려면 참조 유형 Integer을 사용하십시오.

관련 문제