-
[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 타입으로 결과를 받으면 바뀌어 컴파일에러가 발생할 수 있음.반응형'Programming > Java' 카테고리의 다른 글
[Java 자바] 4. 조건문과 반복문 ① 조건문, if, if-else, else if, switch (0) 2022.07.30 [Java 자바] 3. 연산자 ② 이항 연산자, 삼항 연산자 (0) 2022.07.27 [Java 자바] 2. 변수와 타입 ② 데이터 타입, 타입 변환 (0) 2022.07.26 [Java 자바] 2. 변수와 타입 ① 변수의 선언, 사용, 읽기 (0) 2022.07.26 [Java 자바] 1. 자바의 기본 개념 (Java SE, JDK, JRE, JVM) (0) 2022.07.26