종류 및 우선순위
- 단항연산자
- ++, --, +, -, ~, !
- 연산 방향 : ←
- 산술연산자
- *, /, %, +, -, <<, >>, >>>
- 연산 방향 : →
- 비교연산자
- <, >, <=, >=, instanceof, ==, !=
- 연산 방향 : →
- 논리연산자
- &, ^, |, &&, ||
- 연산 방향 : →
- 삼항연산자
- A?B:C
- A는 조건부, 조건부가 참일 경우 B실행, 거짓일경우 C실행
- 대입연산자
- =, +=, -=, %=, /=, <<=, >>=, >>>=, &=, ^=, |=
- 연산 방향 : ←
단항연산자
- 전위형 : 값이 참조되기 전에 연산한다.
- 후위형 : 값이 참조된 후에 연산한다.
//전위형 int a = 1; int b = ++a; //대입 연산을 하기 전에 증가하기 때문에 a 값에는 2,b 값에도 2가 저장된다.
//후위형 int a = 1; int b = a++; //대입 연산을 한 후에 증가시키기 때문에 a 값에는 2,b 값에는 1이 저장된다.
산술연산자
- 모든 이항 연산자는 연산을 수행하기 전에 크기가 4byte 이하인, 즉 byte, char, short, boolean의 자료형을 int으로 변환하여 연산한다.
- 피연산자들의 타입을 서로 일치시킨다. 여기서 피연산자 중에서 자료형의 범위가 더 큰 자료형으로 맞춰서 형변환이 된후 연산을 수행한다.
- float+int → float+(float)int
- double+byte → double+(double)byte
- 0으로 나누는 것은 불가, 0.0f 또는 0.0d로 나누는 것은 오류발생은 일어나지 않지만 infinity 또는 NaN(Not a Number)의 결과가 나온다.
- 0으로 나누면 java.lang.ArithmeticException 이와 같은 오류 발생
쉬프트 연산자
>>, <<, >>> 가 있다.
>>
- 값을 2진수로 표현하였을 경우 값들을 오른쪽으로 한 단위씩 이동시킨다.
- 첫 자리 단위의 보호를 위하여 이전의 값이 0이라면(양수라면) 0으로 채우게되고
- 1이라면(음수라면) 1로 채우게된다.
- x>>n 은 x의 2진값을 오른쪽으로 n개만큼 이동시킨다. 이 때 값은 x/ 2^n의 결과와 같다.
<<
- 값을 2진수로 표현하였을 경우 값들을 왼쪽으로 한 단위씩 이동시킨다.
- 맨 오른쪽의 자리는 0으로 채우게 된다.
- x<<n 은 x의 2진값을 왼쪽으로 n개만큼 이동시킨다. 이 때 값은 x* 2^n의 결과와 같다.
- 기본적으로 >> 와 같지만 첫자리의 수가 무조건 0으로 채워진다.
댓글 없음:
댓글 쓰기