연산자
단항, 이항, 삼항연산자 및 산술 연산자, 대입연산자, 논리연산자 등에 대해 알아봅니다.
🧩1. 연산자와 연산식
연산자(Operations), 피연산자(Operand), 연산식(Expressions)
- 연산자의 종류
연산자 종류 | 연산자 | 피연산자수 | 산술값 타입 | 기능 설명 |
---|---|---|---|---|
산술 | +, -, *, /, % | 이항 | 숫자 | 사칙연산 및 나머지 계산 |
부호 | +, - | 단항 | 숫자 | 음수와 양수의 부호 |
문자열 | + | 이항 | 문자열 | 두 문자열을 연결 |
대입 | =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= |
이항 | 다양 | 우변의 값을 좌변의 변수에 대입 |
증감 | ++, -- | 단항 | 숫자 | 1만큼 증가/감소 |
비교 | ==, !=, >, <, >=, <=, instanceof | 이항 | boolean | 값의 비교 |
논리 | !, &, |, &&, || | 단항, 이항 | boolena | 논리적 Not, And, Or 연산 |
조건 | (조건식) ? A:B | 삼항 | 다양 | 조건식에 따라 A 또는 B중 선택 |
비트 | !, &, |, ^ | 단항, 이항 | 숫자, boolean | 비트 Not, And, Or, Xor 연산 |
쉬프트 | >>, <<, >>> | 이항 | 숫자 | 비트를 좌/우측으로 밀어서 이동 |
🧩2. 연산의 방향과 우선순위
방향과 우선 순위가 존재
- 단항 연산자(++, --, ~, !), 부호 연산자(+, -), 대입 연산자(=, +=, -= 등)는 오른쪽에서 왼쪽으로 연산됩니다.
- *, /, % 는 같은 우선순위를 가지고 있습니다.
연산자 | 연산방향 | 우선순위 |
---|---|---|
증감(++,--), 부호(+, -), 비트(~), 논리(!) | ⬅️ | 높음 |
산술(*, /, %) | ➡️ | ⬆️ ⬇️ |
산술(+, -) | ➡️ | |
쉬프트(<<, >>, >>>) | ➡️ | |
비교(<, >, <=, >=, instanceof) | ➡️ | |
비교(==, !=) | ➡️ | |
논리(&) | ➡️ | |
논리(^) | ➡️ | |
논리(|) | ➡️ | |
논리(&&) | ➡️ | |
논리(||) | ➡️ | |
조건( ? : ) | ➡️ | |
대입(=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>=) | ⬅️ | 낮음 |
🧩3. 단항 연산자
피연산자가 1개인 연산자
- 부호 연산자: +, -
- boolean 타입과 char 타입을 제외한 기본 타입에 사용 가능
- 부호 연산자의 산출 타입은 int
- 증감 연산자: ++, --
- 변수의 값을 1증가 시키거나 (++) 1 감소 (--) 시키는 연산자
- 증감 연산자가 변수 뒤에 있으면 다른 연산자 먼저 처리 후 증감 연산자 처리
- 논리 연산자
- ! 피연산자 : 피연산자가 true으면 false, false면 true
- ~ : byte, short, int, long 타입만 피연산자가 될 수 있습니다.
- 비트값을 0↔️1, 1↔️0 으로 반전시킨다.
🧩4. 이항 연산자
피연산자가 2개인 연산자
- 산술 연산자: +, -, *, /, %
- boolean 타입을 제외한 모든 기본 타입에 사용 가능
- 결과값 산출할 때 Overflow 주의
- 정확한 계산은 정수를 사용
- NaN과 Infinity 연산은 주의할 것
- 문자열 연결 연산자: +
- 피연산자 중 문자열이 있으면 문자열로 결합
- 대입 연산자: =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=
연산식 | 설명 | ||
---|---|---|---|
피연산자 | + | 피연산자 | 덧셉 연산 |
- | 뺄셈 연산 | ||
* | 곱셈 연산 | ||
/ | 좌측 피연산자를 우측 피연산자로 나눗셈 연산 | ||
% | 좌측 피연산자를 우측 피연산자로 나눈 나머지를 구하는 연산 |
구분 | 연산식 | 설명 | ||
---|---|---|---|---|
단순 대입 연산자 | 변수 | = | 피연산자 | 우측의 피연산자 값을 변수에 저장 |
복합 대입 연산자 | += | 우측의 피연산자 값을 변수의 값과 더한 후에 다시 변수에 저장 (변수 = 변수 + 피연산자) |
||
-= | 우측의 피연산자 값을 변수의 값에서 뺀 후 다시 변수에 저장 (변수 = 변수 - 피연산자) |
|||
*= | 우측의 피연산자 값을 변수의 값과 곱한 후에 다시 변수에 저장 (변수 = 변수 * 피연산자) |
|||
/= | 우측의 피연산자 값으로 변수를 나눈 후에 다시 변수에 저장 (변수 = 변수 / 피연산자) |
|||
%= | 우측의 피연산자 값으로 변수의 값을 나눈 후에 나머지를 변수에 저장 (변수 = 변수 % 피연산자) |
|||
&= | 우측의 피연산자 값을 & 연산 후 결과를 변수에 저장 (변수 = 변수 & 피연산자) |
|||
|= | 우측의 피연산자 값을 | 연산 후 결과를 변수에 저장 (변수 = 변수 | 피연산자) |
|||
^= | 우측의 피연산자 값을 ^ 연산 후 결과를 변수에 저장 (변수 = 변수 ^ 피연산자) |
|||
<<= | 우측의 피연산자 값을 << 연산 후 결과를 변수에 저장 (변수 = 변수 << 피연산자) |
|||
>>= | 우측의 피연산자 값을 >> 연산 후 결과를 변수에 저장 (변수 = 변수 >> 피연산자) |
|||
>>>= | 우측의 피연산자 값을 >>> 연산 후 결과를 변수에 저장 (변수 = 변수 >>> 피연산자) |
- 비교 연산자: <, <=, >, >=, ==, !=
- 대소(<, <=, >, >=) 또는 동등(==, !=) 비교해 boolean 타입인 true/false 산출
- 동등 비교 연산자는 모든 타입에 사용
- 크기 비교 연산자는 boolean 타입 제외한 모든 기본 타입에 사용
- 흐름 제어문인 조건문(if), 반복문(for, while)에서 주로 이용
- 실행 흐름을 제어할 때 사용
- 논리 연산자: &&, ||, &, |, ^, !
- 논리곱(&&), 논리합(||), 배타적 논리합(^) ,논리 부정(!) 연산 수행
- 피연산자는 boolean 타입만 사용 가능
- 비트 논리 연산자: &, |, ^
- 피 연산자가 boolean타입일 경우 일반 논리 연산자
- 피연산자가 정수 타입일 경우 비트 논리 연산자로 사용
- 비트 연산자는 피연산자를 int타입으로 자동 타입 변환 후 연산 수행
- 비트 이동 연산자: <<, >>, >>>
- 정수 데이터의 비트를 좌측 또는 우측으로 밀어 이동시키는 연산 수행
🧩5. 삼항 연산자( ? : )
세개의 연산자
- 앞의 조건식 결과에 따라 콜론 앞 뒤의 피연산자 선택 -> 조건 연산식
- 조건식 ? 값 또는 연산식 A : 값 또는 연산식 B
- 조건식이 true면 A, false면 B
int score = 95;
char grade = (score > 90) ? 'A' : 'B'
0 댓글