728x90
반응형
SMALL

연산자와 피연산자 구별하기

9 * x + 3

연산자 : 연산을 수행하는 기호 -> * , +

피연산자 : 연산자의 연산 수행 대상 -> 9 , x , 3

*"모든 연산자는 연산결과를 반환한다.

"즉, 연산결과를 반환하지 않으면 연산자가 아니다.ex) () -> 괄호는 연산자가 아니다.

연산자의 종류

종류 연산자 설명

산술 연산자 + - * / % << >> 사칙 연산과 나머지 연산(%)
비교 연산자 < > >= <= == != 크고 작음과 같고 다름을 비교
논리 연산자 &&  
대입 연산자 = 우변의 값을 좌변에 저장
기타 연산자 (type) ?: instanceof 형변환 연산자, 삼항 연산자, instanceof연산자

연산자의 우선순위

하나의 식에 연산자가 둘 이상 있을 때, 어떤 연산을 먼저 수행 할지를 자동 결정하는 것!= > 5 + 3 * 4

  1. 1.3 * 4
  2. 2.5 + 12 연산 순서를 수동으로 결정하고 싶다면 괄호() 를 사용하면 된다.= > (5 + 3) * 4
  3. 1.5 + 3
  4. 2.8 * 4

연산자 우선순위 표

우선순위 연산자 설명 결합 방향

1 [] 첨자 연산자 왼쪽에서 오른쪽으로
. 멤버 연산자 왼쪽에서 오른쪽으로
2 ++ 후위 증가 연산자 왼쪽에서 오른쪽으로
-- 후위 감소 연산자 왼쪽에서 오른쪽으로
3 ! 논리 NOT 연산자 오른쪽에서 왼쪽으로
~ 비트 NOT 연산자 오른쪽에서 왼쪽으로
+ 양의 부호 (단항 연산자) 오른쪽에서 왼쪽으로
- 음의 부호 (단항 연산자) 오른쪽에서 왼쪽으로
++ 전위 증가 연산자 오른쪽에서 왼쪽으로
-- 전위 감소 연산자 오른쪽에서 왼쪽으로
(타입) 타입 캐스트 연산자 오른쪽에서 왼쪽으로
4 * 곱셈 연산자 왼쪽에서 오른쪽으로
/ 나눗셈 연산자 왼쪽에서 오른쪽으로
% 나머지 연산자 왼쪽에서 오른쪽으로
5 + 덧셈 연산자 (이항 연산자) 왼쪽에서 오른쪽으로
- 뺄셈 연산자 (이항 연산자) 왼쪽에서 오른쪽으로
6 << 비트 왼쪽 시프트 연산자 왼쪽에서 오른쪽으로
>> 부호 비트를 확장하면서 비트 오른쪽 시프트 왼쪽에서 오른쪽으로
>>> 부호 비트까지 모두 비트 오른쪽 시프트 왼쪽에서 오른쪽으로
7 < 관계 연산자(보다 작은) 왼쪽에서 오른쪽으로
<= 관계 연산자(보다 작거나 같은) 왼쪽에서 오른쪽으로
> 관계 연산자(보다 큰) 왼쪽에서 오른쪽으로
>= 관계 연산자(보다 크거나 같은) 왼쪽에서 오른쪽으로
instanceof 인스턴스의 실제 타입 반환 왼쪽에서 오른쪽으로
8 == 관계 연산자(와 같은) 왼쪽에서 오른쪽으로
!= 관계 연산자(와 같지 않은) 왼쪽에서 오른쪽으로
9 & 비트 AND 연산자 왼쪽에서 오른쪽으로
10 ^ 비트 XOR 연산자 왼쪽에서 오른쪽으로
11     비트 OR 연산자
12 && 논리 AND 연산자 왼쪽에서 오른쪽으로
13      
14 ? : 삼항 조건 연산자 오른쪽에서 왼쪽으로
15 = 대입 연산자 및 복합 대입 연산자 (=, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, =)
class Operator1_1 {
    public static void main(String[] args) {
        int x = 10;
        int y = 20;

        // + 연산자는 피연산자가 2개인 이항 연산자 임으로 단항 연산자인 -x 의 -가 먼저 실행된다.
        System.out.print("-x + 3 = ");
        System.out.println(-x + 3); // -10 + 3 = -7

        System.out.print("x + 3 * y = ");
        System.out.println(x + 3 * y); // 10 + (3 * 20) = 70

        System.out.print("x + 3 > y - 2 = ");
        System.out.println(x + 3 > y - 2); // false
        System.out.print("x + 3 < y - 2 = ");
        System.out.println(x + 3 < y - 2); // true

        System.out.print("x > 3 && y < 2 = ");
        System.out.println(x > 3 && y < 2); // false

        int result = x + y * 3;
        System.out.println("result = " + result); // 10 + (20 * 3), result = 70
    }
}

연산자의 결합규칙

우선순위가 같은 연산자가 있을 때, 어떤 것을 먼저?

= > 3 + 4 - 5 -> (3 + 4) - 5

기본적인 계산 순서는 왼쪽에서 오른쪽

대입과 단항 연산자일 경우 오른쪽에서 왼쪽

1. 산술 > 비교 > 논리 > 대입 : 대입은 제일 마지막에 수행

2. 단항(1) > 이항(2) > 삼항(3) : 단항 연산자의 우선순위가 제일 높음

3. 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행 방향은 왼쪽에서 오른쪽임

 

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

형변환 연산자와 자동 형변환  (0) 2023.01.18
증감 연산자와 부호 연산자  (0) 2023.01.18
문자와 문자열  (0) 2023.01.18
기본형과 참조형  (2) 2023.01.18
상수와 리티럴  (0) 2023.01.18

+ Recent posts