문제 풀다가 틀렸는데.

문제 설명

문자열 변수 str = "123"을 정수로 변환하여 출력하세요.

문제를 보고 난 자신있게 썼다.

public class Main {
public static void main(String[] args) {
String str = "123";
int a = (int) str;
System.out.println(a);
}
}

-> 오답

그리고 정답을 보니 감이 오는 게 있었다.

내가 아파서 하루 빠진 날 진도에 저 부분이 있었던 것 같았음.

내가 걱정돼서 자바 책 보면서 어디 진도 나갔는지 확인하고 조금 공부했는데, '내가 조금' 공부한 걸로는 내 지식이 안돼서 당연히 몰랐음.

시험범위에도 없어서 한번 더 보지도 않았고 그냥 감쌌다! 생각했음.

그게 이거였음..

어쨌든 내가 수업을 안 듣고 푼 문제니 틀린 게 당연했음.


문자열을 정수로 변환하는 방법과 래퍼 클래스를 빠르게 익히는 방법

문자열 → 정수 변환

public class StringToInt {
    public static void main(String[] args) {
        String str = "123";

        // 방법 1: Integer.parseInt() - 가장 일반적
        int num1 = Integer.parseInt(str);
        System.out.println("parseInt: " + num1);

        // 방법 2: Integer.valueOf() - Integer 객체 반환 후 자동 언박싱
        int num2 = Integer.valueOf(str);
        System.out.println("valueOf: " + num2);

        // 방법 3: Integer 객체로 받기
        Integer num3 = Integer.valueOf(str);
        System.out.println("Integer 객체: " + num3);
    }
}

래퍼 클래스 빠르게 익히는 방법

1. 핵심 패턴 암기

// 문자열 → 기본형 변환 패턴
int i = Integer.parseInt("123");
double d = Double.parseDouble("3.14");
boolean b = Boolean.parseBoolean("true");
long l = Long.parseLong("12345");

// 기본형 → 문자열 변환 패턴
String s1 = String.valueOf(123);
String s2 = Integer.toString(123);

2. 자주 쓰는 변환 정리표 만들기

변환 메서드 예시
String → int Integer.parseInt() Integer.parseInt("123")
String → double Double.parseDouble() Double.parseDouble("3.14")
int → String String.valueOf() String.valueOf(123)
int → String Integer.toString() Integer.toString(123)

3. 실습 위주 학습

public class TypeConversionPractice {
    public static void main(String[] args) {
        // 매일 이런 변환들을 연습해보세요

        // 1. 문자열 숫자들을 실제 계산에 사용
        String price1 = "1500";
        String price2 = "2300";
        int total = Integer.parseInt(price1) + Integer.parseInt(price2);
        System.out.println("총 가격: " + total);

        // 2. 계산 결과를 다시 문자열로
        String result = String.valueOf(total);
        System.out.println("결과 문자열: " + result);

        // 3. 실수 계산
        String height = "175.5";
        String weight = "70.2";
        double bmi = Double.parseDouble(weight) / 
                    Math.pow(Double.parseDouble(height)/100, 2);
        System.out.println("BMI: " + bmi);
    }
}

4. 예외 처리도 함께 연습

public class SafeConversion {
    public static void main(String[] args) {
        String[] testStrings = {"123", "abc", "45.6", ""};

        for (String str : testStrings) {
            try {
                int num = Integer.parseInt(str);
                System.out.println(str + " → " + num);
            } catch (NumberFormatException e) {
                System.out.println(str + " → 변환 불가능");
            }
        }
    }
}

6. 연습 문제


public class Practice {
    public static void main(String[] args) {
        // 1. "12,34,56"을 쉼표로 나누어 각각 정수로 변환 후 합계 구하기

        // 2. 나이를 문자열로 입력받아 성인인지 판별하기

        // 3. "3.14159"를 실수로 변환 후 소수점 둘째자리까지 출력
    }
}

함수 리턴타입 예시 설명
Integer.parseInt("123") int int a = Integer.parseInt("123"); 문자열 → 기본형 int
Integer.valueOf("123") Integer Integer b = Integer.valueOf("123"); 문자열 → Integer 객체

기본형과 래퍼 클래스

자바에는

  • int, double, char, boolean 같은 **기본형(primitive type)**이 있고
  • 그걸 감싸는 **래퍼 클래스(wrapper class)**가 따로 있음.
기본형 래퍼 클래스
int Integer
double Double
char Character
... ...

왜 래퍼 클래스가 필요해?

  • 객체로 다루거나, 메소드(함수) 쓸 때 필요.
  • 예를 들어, 문자열을 int로 바꾸고 싶으면 Integer.parseInt()처럼 메소드가 필요함.

문자열을 숫자로 변환

문자열 "123" → 숫자 123
이렇게 변환하려면

int a = Integer.parseInt("123"); // 결과: 123 (int 타입)

이런 식으로 래퍼 클래스의 static 메소드 사용.


반대로 숫자를 문자열로 변환

숫자 123 → 문자열 "123"

String s = String.valueOf(123); // 결과: "123"

'잡담' 카테고리의 다른 글

병원 가느라 학원에 빠졌는데 놀지는않았다.  (0) 2025.07.10
JSP 개념 복습 문제  (0) 2025.06.01
집에서 JSP 환경 구축했다  (0) 2025.05.20
코드 채우기/작성  (0) 2025.05.19
부분구역 캡쳐할 때  (0) 2025.05.19