JAVA/메서드 정리

자바에서 변수의 타입 확인하기: 기본형과 래퍼 클래스

min민 2024. 12. 7.

기본형과 래퍼 클래스

자바에서 변수의 타입을 확인하는 방법은 Python과 같은 동적 언어와는 다르다. Python에서는 type() 함수를 사용하여 변수의 타입을 간단히 알 수 있다. 하지만 자바는 정적 타입 언어로, 컴파일 시 변수의 타입이 이미 결정되므로 별도의 타입 확인이 필요하지 않은 경우가 많다. 하지만 디버깅이나 특정 상황에서 변수의 타입을 확인해야 할 때도 있다.

특히, 자바에서 **기본형(primitive type)**과 **래퍼 클래스(wrapper class)**의 차이를 이해하고 타입을 확인하는 방법을 아는 것은 중요하다.

 

기본형(Primitive Type)의 타입 확인

자바에서 기본형은 객체가 아니므로 getClass() 메서드를 사용할 수 없다. 그러나 기본형을 래퍼 클래스로 박싱(Boxing)하면 타입 확인이 가능하다.

다음은 int 타입 변수를 예로 들어 설명한 코드다:

 

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class TypeCheckExample {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        // 사용자 입력을 받아 int로 변환
        int N = Integer.parseInt(br.readLine());

        // 기본형은 getClass() 사용 불가
        System.out.println("기본형 N의 값: " + N);
        
        // 래퍼 클래스(Integer)로 박싱하여 타입 확인
        System.out.println("N의 타입: " + ((Object) N).getClass().getName());
    }
}

 

출력 결과

입력이 123이라고 가정했을 때 출력 결과는 다음과 같다:

기본형 N의 값: 123
N의 타입: java.lang.Integer

 

위 코드는 기본형인 int를 래퍼 클래스인 Integer로 캐스팅하여 타입을 확인하는 예다.

 

참고: 기본형과 래퍼 클래스의 차이

 

  • 기본형(int, double, char 등): 객체가 아니며 메모리 효율성을 위해 사용된다.
  • 래퍼 클래스(Integer, Double, Character 등): 기본형을 객체로 감싸는 클래스다. 기본형과 다르게 메서드와 속성을 제공한다.

래퍼 클래스의 타입 확인

래퍼 클래스는 객체이므로 getClass() 메서드를 직접 사용할 수 있다. 예를 들어, 다음 코드는 Integer 객체의 타입을 확인하는 방법이다:

 

public class WrapperTypeCheck {
    public static void main(String[] args) {
        Integer num = 42; // 래퍼 클래스
        System.out.println("num의 타입: " + num.getClass().getName());
    }
}

 

출력 결과:

num의 타입: java.lang.Integer

 

 

 

Point 총 정리

자바에서 기본형의 타입을 직접 확인할 수는 없다. 하지만 래퍼 클래스로 박싱하면 타입 확인이 가능하다. 디버깅이나 객체 타입 확인이 필요할 때 유용하게 사용할 수 있다. 기본형과 래퍼 클래스의 차이를 이해하면 더 나은 코드 작성에 도움이 된다.

댓글