[연산자 우선순위 : 산술 > 비교 > 논리 > 대입]
- 연산자 여러개가 함께 있는 연산을 계산할때는 우선순위가 있다.
- 위 우선순위에 따라서 최종적인 응답값이 결정된다.
- 단, 괄호로 감싸주면 괄호안의 연산이 최우선순위로 계산된다.
int x = 2;
int y = 9;
int z = 10;
boolean result = x < y && y < z; // true && true = true
result = x + 10 < y && y < z; //산술연산자인 x + 10이 제일 먼저 계산됨, 두 번째로 비교연산자인 <가 연산됨, 그 다음에 논리 연산자인 &&가 계산됨
// false && true = false
result = x + 2 * 3 > y; // false, 연산자 우선순위에 따라 *, +, > 순으로 연산하여 8 > 9 가 계산되므로 false
result = (x + 2) * 3 > y; // 괄호는 최우선순위, 12 > 9 이므로 true
연산 전에 두 피연산자의 타입이 다른 경우 타입을 일치시킨다.
- 두 피연산자의 타입을 같게 일치시킨다. (둘중에 저장공간 크기가 더 큰 타입으로 일치)
- int와 short의 연산은 int로 변환
- long과 int, short 타입의 연산은 long으로 변환
- float와 long, int, short 연산은 float (float은 부동소수점 방식이라서 long보다 표현범위가 넓다)
- double과 float, long, int, short 연산은 double로 변환
short x = 10;
int y = 20;
int z = x + y;
long lx = 30L; // long타입은 L을 붙여줘야 함
long lz = z + lx;
float fx = x;
float fy = y;
float fz = z;
비트 연산
- Byte를 8등분한게 Bit
- Bit는 0, 1 둘중의 하나의 값만을 저장하는 컴퓨터가 저장(표현)가능한 가장 작은 단위
- 컴퓨터의 가장 작은 단위인 Bit이기 때문에 연산중에서 Bit 연산이 제일 빠름
- 0,1 값으로 산술연산을 하거나, 비교연산을 할 수 있지만 비트 연산을 통해 자리수를 옮길수도 있음
- 이처럼 Bit의 자리수를 옮기는 것을 비트 연산이라고 한다.
- '<<' (왼쪽으로 자리수 옮기기), '>>' (오른쪽으로 자리수 옮기기)
- 자리수를 왼쪽으로 옮기는 횟수만큼 2의 배수로 곱셈이 연산되는것과 동일하다.
- 자리수를 오른쪽으로 옮기는 횟수만큼 2의 배수로 나눗셈이 연산되는것과 동일하다.
System.out.println(3<<2); // 3은 2진수로11 -> 왼쪽으로 비트연산 2번했으니 1100 -> 12가 출력됨
System.out.println(3<<1); // 3은 2진수로 11 -> 왼쪽으로 비트연산 1번 110 -> 6이 출력