[java] 단항, 이항, 삼항 연산자

연산자

단항, 이항, 삼항연산자 및 산술 연산자, 대입연산자, 논리연산자 등에 대해 알아봅니다.

🧩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 댓글