2014-12-26 3 views
0

ArrayList를 데이터 멤버로 사용하는 클래스를 만들고 있습니다. 나는 모든 것을 수업에서 일관되게하고 싶습니다. 그래서 전체 클래스와 모든 곳에서 int 대신 Integer를 사용했습니다. 예를 들어int vs Integer in Java 사용

이러한 기능 :

public Integer getMax(); 
public void sort(Integer n); 

내 질문 :이 INT를 사용하는 것보다 낫다? 누군가 다음을 정의 할 수 있습니까?

int i = obj.getMax(); 

// or this: 
int size = 0; 
obj.sort(size); 

정수는 개체 유형이고 int는 기본 유형이라는 것을 알고 있습니다. 그러나, 나는 그런 경우에 사용의 차이를 정말로 모른다!

언제 정수를 사용하는 것이 더 좋고 언제 int를 사용하는 것이 더 낫습니까?

+0

가능한 복제본 : [http://stackoverflow.com/questions/564/what-is-the-difference-between-an-int-and-an-integer-in-java-and-c](http : //stackoverflow.com/questions/564/what-is-the-difference-between-an-int-and-an-integer-in-java-and-c) –

+0

'max' 및'sort 'Java에서 어떻게 수행되는지 살펴 보시기 바랍니다.'max'는'null '을 반환하는 것보다 더 나은 연습으로 간주되는 Optional을 반환합니다. –

+0

@ AycanYaşıt, 아니요, 중복이 아닙니다! –

답변

2

Integer원시int를 통해 래퍼 클래스입니다. 자동 상자 추가언 박싱은 int를 정수로, 정수를 int로 각각 변환합니다. 그래서,

Integer i = 5;   // Autoboxing 
    int val = new Integer(15); // Unboxing 

가 유효 문 은 그래서 가능하면 INT 기본 사용. 컬렉션을 사용해야하는 경우 Integer을 사용합니다. 왜??. 왜냐하면 개체은 생성 및 사용 중에 오버 헤드가 있기 때문입니다.

0

간단히 말해서 정수형을 처리해야 할 때 (예 : 컬렉션 용), 그렇지 않으면 원시 형을 선호합니다.

1

귀하의 경우 :

getMax();에서 정수를 반환하는 경우; 호출자에게 null이 반환 될 것으로 기대할 수 있다고 말하고 있습니다. 'int'를 사용하면이 문제가 발생하지 않습니다.

이외에도 Integer 래퍼 객체는 gc 쓰레기로 인해 더 비싸고 JIT는 최적화하기가 더 어려울 수 있습니다.

가능한 경우 int를 사용하십시오. 다른 옵션이없는 경우 정수를 사용하십시오.

+0

또한 수학을 수행하는 경우 원시도 원할 것입니다. – tddmonkey