자동 타입 변환(promotion)
자동으로 타입이 변환되는 것을 말하며, 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생.

byte byteValue = 10;
int intValue = byteValue; // 자동 타입 변환됨
long longValue = 500000000L;
float floatValue = longValue; // 5.0E9f로 저장됨
double doubleValue = longValue; // 5.0E9로 저장됨
char charValue = 'A';
int intValue = charValue; // 65가 저장됨
강제 타입 변환(casting)
강제로 타입을 변환하는 것을 말하며, 값의 허용 범위가 큰 타입을 허용 범위가 작은 타입으로 쪼개어서 저장하는 것.
int intValue = 10;
byte byteValue = (byte) intValue; // 강제 타입 변환
int intValue = 65;
char charValue = (char) intValue;
System.out.println(charValue); // "A"가 출력 됨
double doubleValue = 3.14;
int intValue = (int) doubleValue; // intValue는 정수 부분인 3만 저장
정수 연산에서의 자동 타입 변환
정수 타입 변수가 산술 연산식에서 피연산자로 사용되면 int타입 보다 작은 byte, short타입의 변수는 int타입으로 자동 타입 변환되어 연산을 수행.
package sec03.exam03;
public class ByteOperationExample{
public static void main(String[]args){
byte result1 = 10 + 20;
System.out.println(result1);
byte x = 10;
byte y = 20;
int result2 = x + y;
System.out.println(result2);
}
}
// 실행 결과
// 30
// 30
정수 연산식에서 모든 변수가 int타입으로 변환되는 것은 아니며, 두 피연산자 중 허용 범위가 큰 타입으로 변환되어 연산을 수행 함.
package sec03.exam04;
public class LongOperationExample{
public static void main(String[]args){
byte value1 = 10;
int value2 = 100;
long value3 = 1000L;
long result = value1 + value2 + value3;
System.out.println(result);
}
}
// 실행 결과
// 1110
실수 연산에서의 자동 타입 변환
실수 타입 변수가 산술 연산식에서 피연산자로 사용될 경우 두 피연산자가 동일한 타입이라면 해당 타입으로 연산되지만, 피연산자 중 하나가 double타입이라면, 다른 피연산자도 double타입으로 자동 타입 변환되어 연산을 수행.
꼭 int타입으로 연산을 해야 안다면 double타입을 int타입으로 강제 변환하고 덧셈 연산을 수행하면 됨.
int intValue = 10;
double doubleValue = 5.5;
double result = intValue + doubleValue;
// double 값으로 변환되어 result에 15.5가 저장됨
int intValue = 10;
double doubleValue = 5.5;
int result = intValue + (int)doubleValue;
// result에 15가 저장됨
문자열 결합 연산: 문자열과 +연산을 하면 다른 피연산자도 문자열로 변환되어 문자열 결합이 일어납니다.
+연산에서의 문자열 자동 타입 변환
자바에서 +연산자는 두 가지 기능을 가지고 있는데, 피연산자가 모두 숫자일 경우에는 덧셈 연산을 수행하지만
피연산자 중 하나가 문자열일 경우에는 나머지 피연산자도 문자열로 자동 변환되어 문자열 결합 연산을 수행 함.
연산식에서 + 연산자가 연이어 나오면 앞에서부터 순차적으로 +연산을 수행하며, 먼저 수행된 연산이 덧셈 연산이라면 덧셈 결과를 가지고
그다음 +연산을 수행.
만약 먼저 수행된 연산이 결합 연산이라면 이후 +연산은 모두 결합 연산이 됨.
문자열을 기본 타입으로 강제 타입 변환
| 변환 타입 | 사용 예 |
| String -> byte | String str="10"; byte value = Byte.parseByte(str); |
| String -> short | String str = "200"; short value = Short.parseShort(str); |
| String -> int | String str = "300000"; int value = Integer.parseInt(str); |
| String -> long | String str = "40000000000"; long value = Long.parseLong(str); |
| String -> float | String str = "12.345"; float value = Float.parseFloat(str); |
| String -> double | String str = "12.345"; double value = Double.parseDouble(str); |
| String -> boolean | String str = "true"; boolean value = Boolean.parseBoolean(str); |
Integer.parseInt(): 문자열을 정수 int타입으로 변환합니다.
Double.parseDouble(): 문자열을 실수 double타입으로 변환합니다.
'Java' 카테고리의 다른 글
| [Java] 연산자의 종류 - 단항 연산자 (0) | 2025.11.02 |
|---|---|
| [Java] 연산자 (3) | 2025.11.02 |
| [Java] 변수와 시스템 입출력 (0) | 2025.10.29 |
| [Java] 변수 (0) | 2025.10.28 |
| [Java] 시작하기 (0) | 2025.10.28 |