자바 형변환 정리

My Pale Blue Dot·2025년 2월 26일
0

JAVA

목록 보기
3/35
post-thumbnail

📅 날짜

2025-02-26

📌 학습 내용

자바에서는 서로 다른 데이터 타입을 변환하는 기능이 필요할 때 형변환(Type Casting) 을 사용한다.
형변환은 자동 형변환(Implicit Casting)강제 형변환(Explicit Casting) 으로 나뉘며,
이를 활용하면 정수와 실수, 문자, 문자열 등의 변환을 효과적으로 수행할 수 있다.


🔹 1. 자료형 변환 (Type Casting)

✅ 자동 형변환 (Implicit Casting)

  • 작은 크기의 자료형 → 큰 크기의 자료형으로 변환될 때 자동으로 변환됨
  • 데이터 손실 없이 변환되므로 따로 명시하지 않아도 됨
  • 변환 방향:
    byte → short → int → long → float → double
byte a = 10;
int b = a;  // 자동 형변환 발생 (byte → int)
double c = b; // int → double 자동 형변환
System.out.println("b: " + b);
System.out.println("c: " + c);

출력 결과:

b: 10
c: 10.0

위 코드에서 byte 타입의 aint에 대입할 때 자동으로 변환되며,
마찬가지로 int 타입의 bdouble에 대입할 때도 자동 변환이 이루어진다.


✅ 강제 형변환 (Explicit Casting)

  • 큰 크기의 자료형 → 작은 크기의 자료형으로 변환할 때 명시적 형변환 필요
  • 데이터 손실이 발생할 가능성이 있음
  • 강제 형변환을 위해 (자료형)을 앞에 붙여 사용
int intValue = 44032;
char charValue = (char) intValue;  // 강제 형변환
System.out.println("charValue: " + charValue);

출력 결과:

charValue: 가 위 코드에서는 `int` 값을 `char`로 변환하면서 유니코드 값에 해당하는 문자가 출력되었다.  
그러나 `double → int` 같은 변환에서는 소수점 이하 데이터가 손실될 수 있음.  
double doubleValue = 3.99;
int intResult = (int) doubleValue; // 소수점 이하 버려짐
System.out.println("intResult: " + intResult);

출력 결과:

intResult: 3

🔹 2. 연산 과정에서의 형변환

✅ 연산에서의 자동 형변환

  • byte, short, char 자료형은 연산 시 자동으로 int로 변환
  • long, float, double이 포함되면 연산 결과는 가장 큰 자료형으로 변환됨
byte x = 10, y = 20;
int result = x + y;  // 연산 결과는 int 타입
System.out.println("result: " + result);

출력 결과:

result: 30

위 코드에서 byte 두 개를 더했지만, 연산 결과는 int가 되었다.

✅ 정수 나눗셈에서의 형변환 문제

  • int / int → 결과가 정수(int)
  • 실수 결과를 원하면 하나 이상의 피연산자를 double로 변환해야 함
int num1 = 10, num2 = 4;
double dnum1 = num1 / num2;  // 정수 나눗셈이므로 결과는 2
double dnum2 = (double) num1 / num2;  // 형변환 후 2.5
System.out.println("dnum1: " + dnum1);
System.out.println("dnum2: " + dnum2);

출력 결과:

dnum1: 2.0
dnum2: 2.5

위에서 dnum1int / int라서 정수 결과가 나왔고,
dnum2double로 변환하여 실수 연산이 수행되었다.


🔹 3. 문자열 변환 (String Conversion)

✅ 문자열 결합

  • "문자열" + 숫자 → 숫자가 문자열로 변환 후 결합됨
  • 문자열과 숫자가 함께 + 연산될 경우, 문자열이 우선 적용됨
System.out.println("Hello " + 123);  // "Hello 123"
System.out.println("10" + 20);       // "1020"
System.out.println(10 + 20 + "30");  // "3030"
System.out.println("10" + (20 + 30)); // "1050"

출력 결과:

Hello 123
1020
3030
1050

위 예제에서 연산 순서가 달라질 경우 결과가 달라질 수 있음.

✅ 문자열 → 숫자 변환

  • Integer.parseInt("10")Stringint
  • Double.parseDouble("3.14")Stringdouble
  • Short.parseShort("5")Stringshort
int num = Integer.parseInt("100");
double dnum = Double.parseDouble("20.5");
System.out.println("num: " + num);
System.out.println("dnum: " + dnum);

출력 결과:

num: 100
dnum: 20.5

문자열을 숫자로 변환하면 계산할 수 있는 데이터로 활용 가능하다.
웹 개발에서는 사용자 입력을 받아 숫자로 변환하는 경우가 많다.


📖 참고 자료

💡 느낀 점

이번 학습에서는 자동 형변환과 강제 형변환의 차이점, 그리고 문자열과 숫자 간의 변환에 대해 공부했다.
특히, 정수 연산과 실수 연산의 차이점을 이해하는 것이 중요했으며,
Integer.parseInt() 등의 변환 메서드를 활용하는 방법도 익힐 수 있었다.

📝 요약

  • 자동 형변환: 작은 자료형 → 큰 자료형 변환 시 자동 적용됨.
  • 강제 형변환: 데이터 손실 가능성이 있으며, 명시적 캐스팅 필요.
  • 연산에서의 형변환: byte, short, char 연산 시 int로 변환됨.
  • 정수 나눗셈의 문제: int / int 연산 결과는 정수, 실수를 원하면 형변환 필요.
  • 문자열 변환: Integer.parseInt(), Double.parseDouble() 등을 사용해 숫자로 변환 가능.
profile
Here, My Pale Blue.🌏

0개의 댓글