Fast Blinking Hello Kitty
 

[🥸JAVA] 자바 자동/강제 타입 변환, 문자열 숫자 변환(➰parseInt, valueOf 메서드)

📍 개요

◾ 자동 타입 변환과 강제 타입 변환에 대해 이해하고 실습해보는 시간을 가졌습니다.
문자열을 기본 데이터 타입으로 변환하고 숫자를 문자열을 변환하는 메서드를 학습해보았습니다.


1️⃣ 자동 타입 변환과 강제 타입 변환

📁 자동 타입 변환

작은 데이터 타입에서 큰 데이터 타입으로 변환할 때에는 자동으로 타입이 변환됩니다.

int intValue = 42;
double doubleValue = intValue; // 자동으로 double로 변환

 

📁 강제 타입 변환

큰 데이터 타입에서 작은 데이터 타입으로 변환할 때는 명시적인 캐스팅이 필요합니다.

double doubleValue = 3.14;
int intValue = (int) doubleValue; // 강제 캐스팅으로 소수점 이하가 잘림

2️⃣ 오토박싱과 언박싱

▪️ 오토박싱기본 데이터 타입(int, long, float, double 등)을
래퍼 클래스 객체(Integer, Long, Float, Double 등)로 자동으로 변환해 주는 기능입니다.

▪️ 언박싱래퍼 클래스 객체를 기본 데이터 타입으로 자동으로 변환해 주는 기능입니다.
 
🤔 오토박싱과 언박싱을 이용하기 위해 개발자가 코드에 무언가를 선언해주는 건 줄 알았는데
자바 컴파일러가 자동으로 처리해준다고 합니다.
즉, 개발자는 별도로 선언하거나 명시적인 변환 코드를 작성할 필요가 없는 것이죠!


3️⃣ 문자열 → 숫자 변환

▪️ `parse()`
문자열을 기본 데이터 타입으로 변환
ex) Integer.parseInt("123"), Double.parseDouble("12.34")

▪️ `valueOf()`
문자열을 래퍼 클래스로 변환
ex) Integer.valueOf("123"), Double.valueOf("12.34")
 

💬 문자열 → 기본 데이터 타입으로 변환할 때 접미사 오류

String str1 = "12345.5F";
float floatString = Float.parseFloat(str1);

String str2 = "12345L";
long longString = Long.parseLong(str2);


▪️ `Float.parseFloat(String s)`
F나 f 접미사를 무시하고 숫자 부분만을 float 값으로 변환합니다.
접미사가 있더라도 변환 과정에서 문제가 발생하지 않습니다.

▪️ `Long.parseLong(String s)`
L이나 l 접미사를 허용하지 않으며, 접미사가 포함된 문자열을 변환하려고 하면 NumberFormatException이 발생합니다.
L 접미사는 숫자 리터럴에서만 사용되며, 문자열 변환에서는 오류를 일으킵니다.


4️⃣ 숫자 → 문자열 변환

값을 문자열로 변환하는 방법에는 여러 가지가 있습니다.

▪️`valueOf()` 메서드(클래스의 정적 메서드)
다양한 데이터 타입문자열로 변환
ex) int, boolean, char 등
기본 데이터 타입과 객체 타입을 처리

public class ValueOfExample {
    public static void main(String[] args) {
        int number = 42;           // 정수형 변수
        boolean flag = true;       // 불리언형 변수
        char letter = 'X';         // 문자형 변수

        // 기본 타입을 문자열로 변환
        String numStr = String.valueOf(number);  // "42"
        String flagStr = String.valueOf(flag);   // "true"
        String letterStr = String.valueOf(letter); // "X"

        // 변환된 문자열 결과 출력
        System.out.println(numStr);   // 42
        System.out.println(flagStr);  // true
        System.out.println(letterStr); // X
    }
}

 
▪️ `toString()` 메서드(인스턴스 메서드)
객체의 정보 문자열로 변환할 때 사용

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 객체의 정보를 문자열로 반환하는 toString() 메서드 오버라이드
    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }

    public static void main(String[] args) {
        // Person 객체 생성
        Person person = new Person("Alice", 30);
        
        // toString() 메서드 호출 및 결과 출력
        System.out.println(person.toString()); // Person{name='Alice', age=30}
    }
}


⭐️ toString / valueOf 차이점
대상이 null일때
✔️ toString()은 NPE가 발생하고
✔️ String.valueOf()는 “null”자체를 반환해줍니다.


📝 오늘의 부트캠프 회고

1️⃣ 잘했던 점
타입 변환에 대해 자세히 공부하는 시간을 가졌는데요. 정리를 하다보니 자동/강제 타입 변환을 확실히 이해하였고 parse와 valueOf 메서드 관련해 수업시간에 여러 퀴즈를 풀어봄으로써 어떤 식으로 쓰이는지 파악할 수 있었습니다.

2️⃣ 부족했던 점
오토박싱과 언박싱이라는 용어를 처음 접해본터라 이해하는데 조금 시간이 걸렸었습니다.

3️⃣ 향후 개선 방향
이해를 돕기 위한 예제 코드가 부족한 것 같아 이후로는 더 꼼꼼히 TIL을 써보도록 하겠습니다.
728x90
320x100