728x90
반응형
연산자 Operator
연산자 - 연산을 수행하는 기호 (+, -, *, / 등)
피연산자 - 연산자의 작업 대상 (변수, 상수, 리터럴, 수식)
연산자 결합규칙
| 종류 | 결합규칙 | 연산자 | 우선순위 |
| 단항 연산자 | <------- | ++ -- + - ~ ! (type) | 높음 낮음 |
| 산술 연산자 | -------> | * / % | |
| -------> | +. - | ||
| -------> | <<. >> | ||
| 비교 연산자 | -------> | <. >. <=. >=. instanceof | |
| -------> | == != | ||
| 논리 연산자 | -------> | & | |
| -------> | ^ | ||
| -------> | | | ||
| -------> | && | ||
| -------> | || | ||
| 삼항 연산자 | -------> | ? : | |
| 대입 연산자 | <------- | =. +=. -=. *=. /=. %=. <<=. >>=. &=. ^=. |= |
단항 연산자
전위형 - 값이 참조되기 전에 증가시킨다(ex j = ++i;)
후위형 - 값이 참조된 후에 증가시킨다(ex j = i++;)
int i = 5, j = 0;
j = i++;
System.out.println(i, j);
//결과 i=6 j=5
int i = 5, j = 0;
j = ++i;
System.out.println(i, j);
//결과 i=6 j=6
나머지 연산자
System.out.println(-10%8); //결과 -2
System.out.println(10%8); //결과 2
System.out.println(-10%-8); //결과 -2
//피연산자의 부호를 모두 무시하고 나머지 연산을 한 결과에 왼쪽 피연산자의 부호를 붙이면 된다.
비교 연산자
| 대소비교 연산자 | > | 좌변 값이 크면 true 아니면 false |
| < | 우변 값이 크면 true 아니면 false | |
| >= | 좌변 값이 크거나 같으면 true 아니면 false | |
| <= | 우변 값이 크거나 같으면 true 아니면 false | |
| 등가비교 연산자 | == | 두 값이 같으면 true 아니면 false |
| != | 두 값이 다르면 true 아니면 false | |
| 문자열 비교 | String.equals(); | 두 값이 같으면 true 아니면 false |
타입이 서로 다를 경우에는 자료형의 범위가 큰 쪽으로 자동 형변환하여 피연산자의 타입을 일치시킨 후에 비교한다.
논리 연산자
OR결합 - || 피연산자 중 어느 한 쪽만 true면 true 결과로 얻음.
AND결합 - && 피연산자 양쪽 모두 true여야 true 결과를 얻음.(왼쪽이 false면 우측 실행 안함)
논리 부정 연산자 - ! true와 false를 반대로 바꿈.
비트 연산자
OR연산자 - | 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 그외는 0을 얻음.
AND연산자 - & 피연산자 양 쪽이 모두 1이어야만 1을 결과로 그 외는 0을 얻음.
XOR연산자 - ^ 피연산자의 값이 서로 다를 때만 1을 결과로 같을 때는 0을 얻음.
비트 전환 연산자 - ~ 0 -> 1, 1 -> 0
쉬프트 연산자 <<, >>
x << n 은 x * 2^n 결과와 같다.
x >> n 은 x / 2^n 결과와 같다.
어떠한 알고리즘 문제를 풀 때, 비트 연산자를 사용해 알고리즘을 접근하면 효율성이 좋다.
메모리, 성능, 속도 측면에서 좋기 떄문에 알아두면 유용할 것 같다.
728x90
반응형
'Java' 카테고리의 다른 글
| [자바의정석/5]배열이란 (1) | 2023.10.20 |
|---|---|
| [자바의정석/4]조건문과 반복문이란 (0) | 2023.10.19 |
| [자바의정석/2]변수란 (1) | 2023.10.16 |
| [자바의정석/1]Java란 (1) | 2023.10.16 |
| [Java] 람다식(lambda) (0) | 2023.09.17 |