여러 변수가 연산식(+, -, *, /)과 함께 사용될 때, 두 가지 주요 규칙에 따라 타입을 맞춘다.
int정수 연산은 int 타입이 기본이다. CPU가 4바이트(32비트) 단위로 처리하는 것이 가장 빠르기 때문이다.
byte, short, char 타입의 변수는 연산식에서 사용되면 일단 int 타입으로 자동 변환된 후 연산됩니다.byte x = 10;
byte y = 20;
// byte result = x + y; // 컴파일 에러! (x + y의 결과는 int 타입)
int result = x + y;
Tip: 만약 결과값을 꼭 byte에 담아야 한다면 강제 타입 변환(
(byte)(x + y))이 필요하다.
long으로 변환double이 끼어 있다면 무조건 double로 변환)int intVal = 10;
double doubleVal = 5.5;
double result = intVal + doubleVal; // 10.0 + 5.5 = 15.5
정수끼리의 나눗셈 결과는 항상 정수다.
int x = 1;
int y = 2;
double result = x / y;
System.out.println(result); // 0.5가 아니라 0.0이 출력됨! (1/2의 결과인 0이 double로 변환됨)
해결책: 피연산자 중 하나를 실수로 강제 변환해야 한다.
double result = (double) x / y; → 0.5double result = x / (double) y; → 0.5+ 연산자에서 피연산자 중 하나가 문자열이면, 나머지 하나도 문자열로 자동 변환되어 결합된다.
10 + 7 + "8" → 17 + "8" → "178""10" + 7 + 8 → "107" + 8 → "1078"