[혼공자] 03-1.연산자와 연산식

Benjamin·2023년 2월 23일
0

혼공자

목록 보기
8/27

03. 연산자

03-1.연산자와 연산식

프로그램에서 데이터를 처리하여 결과를 산출하는 것 = 연산

  • 연산자 = 연산에 사용되는 표시나 기호
  • 피연산자 = 연산자와 함께 연산되는 데이터
  • 연산식 = 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것

연산자의 종류

연산자는 피연산자를 연산해서 값을 산출하는데, 산출되는 값의 타입은 연산자별로 다르다.

산술연산자일 경우, 숫자 타입(byte, short, int, long, float, double)
비교 연산자와 논리 연산자는 논리타입(boolean)
의 결과값이 나온다.

연산자 종류연산자피연산자 수산출값기능
산술+,-,*,/,%이항숫자사칙연산 및 나머지 계산
부호+,-단항숫자음수와 양수의 부호
문자열+이항문자열두 문자열을 연결
대입=,+=,-=,*=,/=,%=이항다양우변의 값을 좌변의 변수에 대입
증감++,--단항숫자1만큼 증가/감소
비교==,!=,>,<,>=,<=,instanceof이항boolean값의 비교
논리^,!,&,|,&&,||단항, 이항boolean논리 부정, 논리곱, 논리합
조건(조건식)?A:B삼항다양조건식에 따라 A 또는 B 중 하나를 선택

instanceof

  • 객체타입 확인하는 연산자
    -> 상속관계에서 부모객체인지 자식객체인지 확인

| 와 & : 비트연산자

  • | : 둘 중 하나라도 1이 있으면 결과는 1
  • & : 둘 다 1이어야 결과도 1

XOR 연산자(^) = 배타적(exclusive) OR = 배타적 논리합 => A ^ B
- 두 피연산자가 다르면 true, 같으면 false
- F XOR F = F, F XOR T = T, T XOR F = T, T XOR T = F

연산식은 반드시 하나의 값을 산출한다.

따라서 하나의 값이 올 수 있는 곳이면 어디든지 값 대신 연산식을 사용할 수 있다.

또한 연산식은 피연산자 위치에 올 수도 있다.
boolean result = (x+y) <5

연산의 방향과 우선순위

x>0 && y<0
위 연산식에서는 <,> 연산자가 먼저 처리될까? 아니면 && 연산자가 먼저 처리될까?

&&보다는 >,<의 우선순위가 높기때문에 x>0 와 y<0이 먼저 처리되고, 해당 산출값으로 &&를 연산한다.

그럼 우선순위가 같은 연산자들끼리는 어떤 순서로 처리될까?
이 경우에는 연산의 방향따라 다르다, 대부분 연산자는 왼쪽에서 오른쪽 방향으로 연산을 수행한다.

예를들어, 100*2/3%5 이 식에서 *,/,%는 같은 우선순위를 갖고있기때문에 왼쪽에서 오른쪽 방향으로 연산된다.

대부분 연산자는 왼쪽에서 오른쪽 방향이지만, 단항 연산자(++,--,!,~), 부호 연산자(+,-), 대입 연산자(=,+=,-=,...)는 오른쪽에서 왼쪽 방향으로 연산을 수행한다.

예를들어 a=b=c=5의 연산식은 c=5, b=c, a=b 순서로 실행된다.

이와 같이 어떤 연산자를 사용하느냐에 따라 연산의 방향과 우선순위가 결정되기 때문에 복잡한 연산식에서는 주의가 필요하다.
그래서 괄호 () 를 사용해서 먼저 처리해야 할 연산식을 묶어주는게 좋다.
괄호 부분은 연산에서 최우선순위를 갖는다.

  • 정리! 연산의 방향과 우선순위
  1. 단항, 이항, 삼항 연산자 순으로 우선순위를 갖는다.
  2. 산술, 비교, 논리, 조건, 대입 연산자 순으로 우선순위를 갖는다.
  3. 단항(논리 연산자 중에서는 '!' 등등), 부호, 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽이다.
  4. 복잡한 연산식에는 괄호는 사용해서 우선순위를 정한다.

출처
혼자공부하는 자바

0개의 댓글