2025-02-26
자바에서는 서로 다른 데이터 타입을 변환하는 기능이 필요할 때 형변환(Type Casting) 을 사용한다.
형변환은 자동 형변환(Implicit Casting) 과 강제 형변환(Explicit 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
타입의 a
를 int
에 대입할 때 자동으로 변환되며,
마찬가지로 int
타입의 b
를 double
에 대입할 때도 자동 변환이 이루어진다.
(자료형)
을 앞에 붙여 사용 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
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
위에서 dnum1
은 int / int
라서 정수 결과가 나왔고,
dnum2
는 double
로 변환하여 실수 연산이 수행되었다.
"문자열" + 숫자
→ 숫자가 문자열로 변환 후 결합됨 +
연산될 경우, 문자열이 우선 적용됨 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")
→ String
→ int
Double.parseDouble("3.14")
→ String
→ double
Short.parseShort("5")
→ String
→ short
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()
등을 사용해 숫자로 변환 가능.