cs/java-spring-boot

[Zero-base] 1-9. 연산자와 피연산자

Lomo 2022. 1. 14. 16:53
반응형

표현식과 평가

연산자

  • 더하기, 빼기, 곱하기, 나누기 (나머지 연산자 및 대입 연산자 표함)
  • 이미 정의된 연산을 수행하는 문자 또는 문자 조합 기호

 

피연산자

  • 연산에 참여하는 변수나 상수

 

현식

  • 자바 프로그래밍에서 연산자와 피연산자의 조합으로 구성된 연산식 (표현식)은 항상 하나의 결과 값이 있음

 

 

연산자의 종류와 우선순위

연산자 종류

  • 피연산자의 수에 따라 단항, 이항, 삼항 연산자가 있음
  • 단항 연산자 : ++, --
  • 이항 연산자 : +, -, *, /, %, =
  • 삼항 연산자 : (조건) ? (참) : (거짓)

 

우선순위 (왼쪽에서 오른쪽으로 연산)

  • 1 후위 단항 i++, i--
  • 2 전위 단항 ++i, --i, +val, -val, !
  • 3 곱셈/나눗셈/나머지 *, /, %
  • 4 덧셈/뺄셈 +, -
  • 5 비트 이동 <<, >>, >>>
  • 6 관계 <, >, <=, >=, intanceof
  • 7 동등 ==, !=
  • 8 비트 AND &
  • 9 비트 XOR ^
  • 10 비트 OR |
  • 11 논리 AND &&
  • 12 논리 OR ||
  • 13 조건 삼항 (조건) ? (참) : (거짓)
  • 14 대입 (오른쪽에서 왼쪽으로 대입) =, +=, -=

 

대입 연산자 (assignment operator)

  • 연산자의 오른쪽 값을 왼쪽 변수에 저장하는 연산자
  • 자정한다는 의미로 왼편 항에는 저장 가능한 형태(변수)가 와야 함

 

산술 연산자 (가감승제)

문자열 덧셈 예시

  • + (문자열도 가능)
  • -
  • *
  • /
  • %

나머지 연산자 예시

 

 

증감 연산자

  • 전위 증가 연산자 : ++i
  • 전위 감소 연산자 : --i
  • 후위 증가 연산자 : i++
  • 후위 감소 연산자 : i--

 

증감 연산자 예시

 

증감 연산자 예시 출력 결과

 

조건 연산자

  • (조건)의 논리(참/거짓) 값에 따라 피연산자 (2개) 중 하나가 결과 값이 됨
  • 삼항 연산자 (유일)

삼항 연산자 예시 (1)
삼항 연산자 예시 (2)

 

관계 연산자

  • 2개의 피연산자의 크기를 비교하는 연산자
  • 크기를 비교하기 때문에 결과값은 boolean 값 (true, false)
  • ex. >, >=, <, <=, ==, !=

관계 연산자 예시 (1)

 

관계 연산자 예시 (2)

 

논리 연산자

  • AND : &&
  • OR : ||
  • XOR : ^ (이항 연산자로 두 피연산자가 달라야함)
  • NOT : !
  • AND, OR, XOR : 이항 연산자
  • NOT : 단항 연산자
  • 피연산자들은 boolean 값이면, 그 결과도 boolenan 값임 (true, false)

논리 연산자 예시

  • 피연산자 2개 중 왼쪽에 있는 피연산자만으로 전체 결과가 결정된다면 오른쪽 피연산자는 평가하지 않음

 

비트 논리 연산자

  • &, |, ^, ~
  • 피연산자 정수 값을 비트 단위로 논리 연산을 수행 -> 결과도 정수 값 (int)
  • 보수 연산자 (~)는 단항 연산자
x y x & y x | y x ^ y ~x 
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0

 

보수 연산자 예시

 

비트 이동 연산자 (bit shift operators) 

  • signed left shift (op1 >> op2) :
  • op1을 오른쪽으로 op2 비트만큼 이동
  • 가장 왼쪽 부호 비트는 원래 비트로 채움

signed left shift 예시

 

  • signed right shift (op1 << op2) :
  • op1을 왼쪽으로 op2 비트만큼 이동
  • 가장 오른쪽 비트는 모두 0으로 채움

signed right shift 예시

 

  • unsigned right shift (op1 >>> op2) :
  • op1을 오른쪽으로 op2 비트만큼 이동
  • 가장 왼쪽 부호 비트는 모두 0으로 채움

 

축약 대입 연산자

  • X = X + 2;  →  X +=2;
  • X = X << Y;  →  X <<= Y;  //비트연산자
  • X = X | Y;  →  X |= Y;

 

형변환 연산자

자동 형변환 (묵시적 형변환)

  • 자바연산은 동일한 형의 피연산자로 연산을 수행
  • ex. 12 / 3.0   →  12.0 / 4.0
  • 정수형 데이터를 실수형으로 변환한 경우, 오차가 존재할 수 있지만 데이터 손실은 발생되지 않음

 

명시적 형변환 (explicit type cast)

  • 실수를 정수로 변환
  • 범위가 큰 정수형에서 더 작은 정수형으로 변환할 때는 명시적 형변환 필요
  • ex. int intValue = 10.0 / 1.0;  //오류
  • ex. int intValue = (int) (10.0 / 1.0);

 

실수 형변환 예시 (1)
실수 형변환 예시 (1) 출력결과

 

실수 형변환 예시 (2)
실수 형변환 예시 (2) 출력결과

 

기타 참고사항

ArithmeticException

  • 정수를 0으로 나우면 실행 중 발생 (RuntimeException)

Runtime - ArithmeticException 예시

 

Infinity

  • 실수를 0.0으로 나누면 무한대를 의미

 

byte와 short의 산술 연산

  • 모두 int로 변환되어 연산을 수행

short 산순 연산 예시

 

연산자 우선순위

  • 단항 > 산술 > 이동 > 관계 > 동등 > 비트논리 > 논리 > 조건 > 대입

 

반응형