Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 Integer와 int의 차이점 완벽 정리

Java를 배우다 보면 Integerint의 차이를 정확히 이해하는 것이 매우 중요합니다. 두 타입은 이름은 비슷하지만 성격과 용도가 완전히 다릅니다. 이 글에서는 두 타입의 핵심 차이점과 실제 코드 예제를 통해 쉽게 설명해 드리겠습니다.

Integer(래퍼 클래스)와 int(기본 데이터 타입)

  • Integer와 int의 가장 큰 차이점은 Integer는 래퍼 클래스(wrapper class)이고, int는 기본 데이터 타입(primitive data type)이라는 점입니다.
  • int는 32비트 부호 있는(signed) 2의 보수 방식으로 정수를 저장하는 데이터 타입입니다. 반면 Integer는 기본 타입인 int를 객체로 감싸는(wrap) 클래스입니다.
  • Integer는 객체가 필요한 메서드의 인자로 사용할 수 있습니다. 반면 int는 정수 값이 필요한 메서드의 인자로 사용되며, 산술 연산식에 직접 활용할 수 있습니다.
  • int는 메모리에 정수 값을 저장하는 역할을 하고, Integer는 int 값을 객체로 변환하거나 객체를 다시 int로 변환하는 기능을 제공합니다.
  • int 타입 변수는 final로 선언하지 않는 한 값 변경이 가능(mutable)합니다. 반면 Integer 클래스는 하나의 int 값을 담고 있으며 불변(immutable) 특성을 가집니다.

예제 1: int(기본 데이터 타입) 사용하기

public class PrimitiveDataTypeTest {
    public static void main(String []args) {
        // int 선언
        int a = 20;
        int b = 40;
        int result = a + b;
        System.out.println("Result is: " + result);
    }
}

실행 결과

Result is: 60

위 예제에서 볼 수 있듯이, int는 산술 연산자(+)를 사용해 직접 계산할 수 있습니다. 이것이 기본 데이터 타입의 장점입니다.

예제 2: Integer(래퍼 클래스) 사용하기

public class WrapperClassTest {
    public static void main(String []args) {
        int a = 20;
        Integer b = Integer.valueOf(a);
        System.out.println("Converted Value of b is: " + b);
        Integer c = new Integer(30);
        int d = c.intValue();
        System.out.println("Converted Value of d is: " + d);
    }
}

실행 결과

Converted Value of b is: 20
Converted Value of d is: 30

위 예제에서 Integer.valueOf(a)는 기본 타입 int를 Integer 객체로 변환하는 박싱(Boxing) 과정이며, c.intValue()는 Integer 객체를 다시 int로 변환하는 언박싱(Unboxing) 과정입니다.

마무리 정리

구분intInteger
분류기본 데이터 타입래퍼 클래스
저장 방식값 자체를 저장객체 형태로 저장
null 허용 여부불가능가능
변경 가능성final이 아니면 변경 가능불변(immutable)
주요 용도산술 연산, 일반적인 정수 처리컬렉션(List, Map 등), 제네릭, null 처리

결론적으로, 단순한 숫자 연산에는 int를 사용하고, 컬렉션이나 제네릭처럼 객체가 필요한 상황 또는 null 값 표현이 필요한 경우에는 Integer를 사용하는 것이 바람직합니다.