Java 형 변환의 모든 것: 기본 타입과 문자열 변환

자바(Java)에서 형 변환은 서로 다른 데이터 타입 간의 호환성을 유지하면서 데이터를 처리할 수 있게 하는 중요한 작업입니다. 이번 글에서는 자동 형 변환(Implicit Casting), 명시적 형 변환(Explicit Casting), 객체 간의 형 변환, 그리고 문자열과 기본 타입 간 변환까지 모두 다루어봅니다.

1. 자동 형 변환 (Implicit Casting)

자동 형 변환은 작은 데이터 타입에서 큰 데이터 타입으로 변환될 때 자바가 자동으로 수행하는 형 변환입니다. 예를 들어, int에서 long으로 변환하거나 float에서 double로 변환할 때 발생합니다. 데이터 손실 위험이 없기 때문에 별도의 형 변환 코드를 작성할 필요가 없습니다.

public class ImplicitCastingExample {
    public static void main(String[] args) {
        int numInt = 100;
        long numLong = numInt; // int에서 long으로 자동 형 변환
        float numFloat = numLong; // long에서 float으로 자동 형 변환

        System.out.println("int to long: " + numLong);
        System.out.println("long to float: " + numFloat);
    }
}

2. 명시적 형 변환 (Explicit Casting)

큰 데이터 타입에서 작은 데이터 타입으로 변환할 때 명시적 형 변환이 필요합니다. 명시적 형 변환은 데이터 손실 가능성이 있으므로 주의해야 하며, 캐스트 연산자를 사용해 형 변환을 명시해야 합니다.

public class ExplicitCastingExample {
    public static void main(String[] args) {
        double numDouble = 100.99;
        int numInt = (int) numDouble; // double에서 int로 명시적 형 변환

        System.out.println("double to int: " + numInt);
    }
}

3. 객체 간 형 변환 (객체 캐스팅)

객체 형 변환은 클래스 계층 구조에서 상위 클래스와 하위 클래스 간의 변환에 해당합니다. 업캐스팅(Upcasting)다운캐스팅(Downcasting)으로 나눌 수 있습니다.

  • 업캐스팅: 하위 클래스에서 상위 클래스로 변환합니다. 자동으로 변환됩니다.
  • 다운캐스팅: 상위 클래스에서 하위 클래스로 변환하며, 명시적으로 변환을 지정해야 합니다.
class Animal {
    public void sound() {
        System.out.println("Animal sound");
    }
}

class Dog extends Animal {
    public void bark() {
        System.out.println("Dog barking");
    }
}

public class CastingExample {
    public static void main(String[] args) {
        Animal animal = new Dog(); // 업캐스팅
        if (animal instanceof Dog) { // 다운캐스팅
            Dog dog = (Dog) animal;
            dog.bark();
        }
    }
}

4. 문자열과 기본 타입 간 형 변환

문자열과 기본 타입 간 형 변환은 데이터 입력이나 출력을 위해 자주 사용됩니다.

문자열을 기본 타입으로 변환

문자열을 기본 타입으로 변환할 때는 래퍼 클래스parse 메서드를 사용합니다.

public class StringToPrimitiveExample {
    public static void main(String[] args) {
        String strInt = "123";
        int numInt = Integer.parseInt(strInt); // 문자열을 int로 변환
        System.out.println("String to int: " + numInt);
    }
}

기본 타입을 문자열로 변환

기본 타입을 문자열로 변환하려면 String.valueOf()toString() 메서드를 사용합니다.

public class PrimitiveToStringExample {
    public static void main(String[] args) {
        int numInt = 123;
        String strInt = String.valueOf(numInt); // int를 문자열로 변환
        System.out.println("int to String: " + strInt);
    }
}

5. 박싱(Boxing)과 언박싱(Unboxing)

자바의 오토박싱은 기본 타입을 객체로 변환하고, 언박싱은 객체 타입을 기본 타입으로 변환하는 작업입니다.

public class BoxingUnboxingExample {
    public static void main(String[] args) {
        int num = 100;
        Integer boxedNum = num; // 오토박싱
        int unboxedNum = boxedNum; // 언박싱

        System.out.println("Auto-boxing: " + boxedNum);
        System.out.println("Unboxing: " + unboxedNum);
    }
}

자바에서 형 변환을 정확하게 이해하고 활용하면 더 안전하고 유연하게 코드를 작성할 수 있습니다. 이 글에서는 자동 형 변환, 명시적 형 변환, 객체 캐스팅, 문자열 변환을 모두 다루었습니다. 자바의 형 변환을 이해하는 데 도움이 되길 바랍니다!

위로 스크롤