ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java 자바] 3. 연산자 ① 연산자 우선순위, 단항 연산자
    Programming/Java 2022. 7. 26. 22:01
    반응형

    3-1. 연산자와 연산식

    - 연산(Operations): 프로그램에서 데이터를 처리하여 결과를 산출하는 것

    - 연산자(Operator): 연산에서 사용되는 표시나 기호

    - 피연산자(Operand): 연산되는 데이터
    - 연산식(Expressions): 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것

    연산자 종류 연산자 피연산자 수 산출값 기능설명
    산술 +, -, *, /, % 이항 숫자 사칙연산 및 나머지 계산
    부호 +, - 단항 숫자 음수와 양수 부호
    문자열 + 이항 문자열 두 문자열을 연결
    대입 =, +=, -=, *=, /=, %= 등 이항 다양 우변의 값을 좌변의 변수에 대입
    증감 ++, -- 단항 숫자 1만큼 증가/감소
    비교 ==, !=, >, <, >=, <=, 
    instanceof
    이항 boolean 값의 비교
    논리 !, &, |, &&, || 단항, 이항 boolean 논리적 NOT, AND, OR 연산
    조건 (조건식) ? A : B 삼항 다양 조건식에 따라 A 또는 B 중 하나 선택
    비트 ~, &, |, ^ 단항, 이항 숫자, boolean 비트 NOT, AND, OR, XOR 연산
    쉬프트 >>, <<, >>> 이항 숫자 비트를 좌측/우측으로 밀어서 이동
    // 피연산자의 개수에 따라 단항, 이항, 삼항 연산자로 구분
    
    // 단항연산자
    ++x;
    
    // 이항연산자
    x + y;
    
    // 삼항연산자
    (sum > 90) ? "A" : "B";

    3-2. 연산의 방향과 우선순위

    연산식에는 연산자가 복합적으로 구성되어 있는 경우가 많으며, 프로그램에 설정된 연산자 우선순위에 따라 계산

    - 결합 방향: 같은 우선순위를 가지는 연산자가 둘 이상 있을 때, 결합 순서에 따라 실행 순서가 결정

    (double)(int) 10;   // <- 방향으로 진행, 최종 double 형태로 10.0 출력
    (int)(double) 10;   // <- 방향으로 진행, 최종 int 형태로 10 출력
    우선순위 연산자 설명 결합방향
    1 [] 첨자 연산자 왼쪽에서 오른쪽으로
      . 멤버 연산자 왼쪽에서 오른쪽으로
    2 ++ 후위 증가 연산자 왼쪽에서 오른쪽으로
      -- 후위 감소 연산자 왼쪽에서 오른쪽으로
    3 ! 논리 NOT 연산자 오른쪽에서 왼쪽으로
      ~ 비트 NOT 연산자 오른쪽에서 왼쪽으로
      + 양의 부호 (단항 연산자) 오른쪽에서 왼쪽으로
      - 음의 부호 (단항 연산자) 오른쪽에서 왼쪽으로
      ++ 전위 증가 연산자 오른쪽에서 왼쪽으로
      -- 전위 감소 연산자 오른쪽에서 왼쪽으로
      (타입) 타입 캐스트 연산자 오른쪽에서 왼쪽으로
    4 * 곱셈 연산자 왼쪽에서 오른쪽으로
      / 나눗셈 연산자 왼쪽에서 오른쪽으로
      % 나머지 연산자 왼쪽에서 오른쪽으로
    5 + 덧셈 연산자 (이항 연산자) 왼쪽에서 오른쪽으로
      - 뺄셈 연산자 (이항 연산자) 왼쪽에서 오른쪽으로
    6 << 비트 왼쪽 시프트 연산자 왼쪽에서 오른쪽으로
      >> 부호 비트를 확장하면서 비트 오른쪽 시프트 왼쪽에서 오른쪽으로
      >>> 부호 비트까지 모두 비트 오른쪽 시프트 왼쪽에서 오른쪽으로
    7 < 관계 연산자(보다 작은) 왼쪽에서 오른쪽으로
      <= 관계 연산자(보다 작거나 같은) 왼쪽에서 오른쪽으로
      > 관계 연산자(보다 큰) 왼쪽에서 오른쪽으로
      >= 관계 연산자(보다 크거나 같은) 왼쪽에서 오른쪽으로
      instanceof 인스턴스의 실제 타입 반환 왼쪽에서 오른쪽으로
    8 == 관계 연산자(와 같은) 왼쪽에서 오른쪽으로
      != 관계 연산자(와 같지 않은) 왼쪽에서 오른쪽으로
    9 & 비트 AND 연산자 왼쪽에서 오른쪽으로
    10 ^ 비트 XOR 연산자 왼쪽에서 오른쪽으로
    11 | 비트 OR 연산자 왼쪽에서 오른쪽으로
    12 && 논리 AND 연산자 왼쪽에서 오른쪽으로
    13 || 논리 OR 연산자 왼쪽에서 오른쪽으로
    14 ? : 삼항 조건 연산자 오른쪽에서 왼쪽으로
    15 = 대입 연산자 및 복합 대입 연산자
    (=, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, |=)
    오른쪽에서 왼쪽으로

    3-3. 단항 연산자

    3-3-1. 부호연산자 ( +, - )

    연산식 설명
    + 피연산자 피연산자의 부호 유지
    - 피연산자 피연산자의 부호 변경
    [❗️Syntax Alert] 부호연산자의 산출타입은 int 타입
    - short 타입 값으로 부호를 연산하면 int타입 값으로 바뀌어 컴파일에러가 발생할 수 있음.
    short s = 100;
    short result = -s;   // 컴파일 에러
    int result2 = -s;  // 오류 없음

    3-3-2. 증감연산자 ( ++, -- )

    연산식 설명
    ++ 피연산자 다른 연산을 수행하기 전에 피연산자의 값을 1 증가시킴
    -- 피연산자 다른 연산을 수행하기 전에 피연산자의 값을 1 감소시킴
    피연산자 ++ 다른 연산을 수행한 후에 피연산자의 값을 1 증가시킴
    피연산자 -- 다른 연산을 수행한 후에 피연산자의 값을 1 감소시킴
    int num1 = 7, num2 = 7;
    int result1, result2;
    
    result1 = --num1 + 4;
    result2 = num2-- + 4;
    
    System.out.println("전위 감소 연산자에 의한 결과 : "+ result1 + ", 변수의 값 : " + num1);
    System.out.println("후위 감소 연산자에 의한 결과 : "+ result2 + ", 변수의 값 : " + num2);
    
    // 전위 감소 연산자에 의한 결과 : 10, 변수의 값 : 6
    // 후위 감소 연산자에 의한 결과 : 11, 변수의 값 : 6

    3-3-3. 논리 부정 연산자 ( ! )

    연산식 설명
    ! 피연산자 피연산자가 true이면 false 값을 산출
    피연산자가 false이면 true 값을 산출

    3-3-4. 비트 반전 연산자 ( ~ )

    연산식 설명
    ~ 10 (00001010) 산출 결과: -11 (11110101)

    - 비트 반전 연산자는 정수 타입(byte, short, int, long)의 피연산자에만 사용
    - 피연산자를 2진수로 표현했을 때 비트값인 0을 1로, 1은 0으로 반전
    (참고: https://vmpo.tistory.com/106)

    [❗️Syntax Alert] 비트 반전 연산자의 산출타입은 int 타입
    - byte 타입으로 결과를 받으면 바뀌어 컴파일에러가 발생할 수 있음.
    반응형

    댓글

Designed by Tistory.