연산자
- 연산에 사용하는 기호
항
- 연산에 사용하는 값
대입 연산자 (=)
- 변수에 값을 대입하는 연산자
- 연산자 중 우선순위가 가장 낮음
- 대입연산자 기준으로 좌측을 lValue, 우측을 rValue 라고함
부호 연산자 ( +, -)
- 변수나 상수값을 양수 / 음수로 나타냄
- 단항 연산자
산술 연산자 ( +, -, *, /, % )
- 사칙연산에서 사용하는 연산자
- % -> 나머지를 구하는 연산자 // %는 *, /와 우선순위 동일
증가/감소 연산자 ( ++, -- )
- 증가, 감소 시키는 단항 연산자
- 위치에 따라 값이 다르다.
관계 연산자 ( >, <, ≥, ≤, ==, != )
- 항이 2개인 이항 연산자
- 결과는 참(true), 거짓(false)로 반환
- == -> 두 항값이 같으면 참
- != -> 두 항값이 다르면 참
논리 연산자 ( &&, ||, !)
- 명제를 생각하면 됨
- && -> 모두 참이면 참
- || -> 둘 중 하나라도 참이면 참
- ! -> 부정 //단항연산자
단락 회로 평가 (SCE)
- 두 항 모두를 실행하지 않고 결과 값을 알 수 있을 때 나머지 항을 실행하지 않는 것
- 예상한 실행 결과 값이 다를 수 있으므로 주의 해야함
복합 대입 연산자 ( +=, -=, *=, /=, <<=, >>=, >>>=, &=, |=, ^= )
- 여산이 모두 끝난 후 마지막으로 결과 값을 변수에 대입
- 우선순위가 가장 낮은 연산자
조건 연산자 ( 조건식 ? 결과1 : 결과2)
- 삼항 연산자
- 조건식이 참인 경우 결과1
- 조건신이 거짓인 경우 결과2
비트 연산자
- 비트 단위로 연산이 이루어지는 연산자
- '암호와' 작업처럼 임의의 숫자를 만들 때 사용
- 어떤 변수의 특성 비트를 꺼내보는(masking) 경우 사용
- Java는 이런환경은 아니지만, 프로그램 특정값을 만들거나 연산시에 사용
& 연산자
- 비트 값이 모두 1인 경우 1값을 출력
- ex)
int num1 = 5;
int num2 = 10;
int result = num1 & num2
/*
num1 : 00000101
& num2 : 00001010
result : 00001111
*/
| 연산자
- 비트 값이 하나라도 1인 경우 1값을 출력
- ex)
int num1 = 5;
int num2 = 10;
int result = num1 & num2
/*
num1 : 00000101
| num2 : 00001010
result : 00001111
*/
^ 연산자
- 비트 값이 같으면 0출력, 다르면 1출력
- ex)
int num1 = 5;
int num2 = 10;
int result = num1 & num2
/*
num1 : 00000101
^ num2 : 00001010
result : 00001111
*/
~ 연산자
- 비트 값에서 0을 1로, 1을 0으로 변환
- ex)
int num = 10;
int result = ~num;
/*
num = 00001010
~num = 11110101 음수가됨
00001011 = 11 음수값은 양수로 표기 후 그 값을 알아 낼 수 있음
따라서 ~num = -11
*/
<< 연산자
- 왼쪽으로 비트를 이동시키는 연산자
- ex)
int num = 5; // num : 00000101
num << 2; // num << 2 : 00010100
/*
앞부분 00은 없어지고 뒷부분은 0으로 채움
왼쪽으로 n비트의 이동은 2^n만큼 곱한다는 뜻
*/
>> 연산자
- 오른쪽으로 비트를 이동하는 연산자
- ex)
int num = 5; // num : 00000101
num >> 2; // num >> 2 : 00000001
/*
뒷부분 01은 없어지고 채워지는 비트값은 부호비트와 같은 것을 사용
왼쪽으로 n비트의 이동은 2^n만큼 나눈다는 뜻
*/
>>> 연산자
- 오른쪽으로 비트를 이동하는 연산자
- >> 연산자와 다른점은 채워지는 부분에 부호비트와 상관없이 '0'으로 채움
연산자 우선순위
- 단항 연사자 -> 이항 연산자 -> 삼항 연산자 순서
- 산술 -> 관계 -> 논리 -> 대입 순서
- ( )의 우선순위가 가장 높음
728x90
반응형
'Language > Java' 카테고리의 다른 글
'Do it 자바프로그래밍 입문' 5장 정리 (0) | 2022.09.06 |
---|---|
'Do it 자바프로그래밍 입문' 4장 정리 (0) | 2022.09.03 |
'Do it 자바프로그래밍 입문' 2장 정리 (0) | 2022.08.31 |
'Do it 자바프로그래밍 입문' 1장 정리 (0) | 2022.08.31 |
'Do it'으로 Java 기본 입문하기! (0) | 2022.08.27 |
댓글