IT/Java
[Java] 연산식 자동 타입 변환
Huitopia
2024. 2. 20. 12:01
728x90
산술 연산식에서 피연산자로 사용되는 경우
정수 타입
자바에서는 피연산자를 4byte 단위로 저장하기 때문에 정수 타입 변수가 산술 연산식에서 피연산자로 사용되면 int보다 작은 byte, char, short 타입 변수는 int 타입으로 자동 변환이 되어 연산을 수행한다.
byte x = 10;
byte y = 20;
byte result = x + y; //error
byte x = 10;
byte y = 20;
int result = x + y; // 30
byte 변수 x, y가 피연산자로 사용되면 변수값은 int 타입으로 연산되고 결과도 int 타입으로 생성된다. 결과값을 byte 변수에 저장할 수 없고, int 변수에 저장해야 한다.
정수 연산식에서 모든 변수가 int 타입으로 변환되는 것은 아니며, int 타입보다 허용 범위가 더 큰 long 타입이 피연산자로 사용되면 다른 피연산자는 long 타입으로 변환되어 연산을 수행한다. byte때와 마찬가지로 연산 결과는 int 보다 더 큰 long 타입 변수에 저장해야 한다.
실수 타입
float result = 1.2f + 3.4f; // 4.6f
피연산자 모두 f가 붙어있기 때문에 float 타입으로 문제 없이 연산을 수행한다. 결과 또한 float 타입이다.
double result = 1.2f + 3.4;
// 1.2f(float) > 1.2(double)
// 1.2 + 3.4
그러나 피연산자 중 하나가 double 타입이면 다른 피연산자도 double 타입으로 변환되어 연산되고, 결과도 double 타입이 된다.
int intVal = 10;
double doubleVal = 5.5;
int result = intVal + (double) doubleVal; // 10 + 5
int 타입과 double 타입을 연산하는 경우에도 int 타입 피연산자가 double 타입으로 자동 변환되고 연산을 수행한다. 만약 int 타입으로 연산을 해야 한다면 double 타입을 int 타입으로 강제 변환 후 연산을 수행한다.
+ 연산자
- 피연산자가 모두 숫자일 경우 덧셈 연산을 수행한다.
- 피연산자 중 하나가 문자열일 경우에는 나머지 피연산자도 문자열로 자동 변환되어 문자열 결합 연산을 수행한다.
- + 연산자가 연이어 나오면 앞에서부터 순차적으로 + 연산을 수행한다.
- 특정 부분을 우선 연산하고 싶다면 해당 부분을 괄호()로 감싸면 최우선으로 연산을 수행한다.
728x90