- 항(Operand) : 연산에 사용되는 값
- 연산자(Operator) : 항을 이용하여 연산하는 기호
- 종류 : 단항 연산자, 이항연산자, 삼항연산자
1. 대입 연산자
- =
- 변수에 값을 대입하는 연산자
- 연산의 결과를 변수에 대입
- 우선순위가 가장 낮음
- 왼쪽 변수(lvalue)에 오른쪽 값(rvalue)를 대입
-
int age = 15;
2. 부호 연산자
- +, -
- 단항 연산자
- 양/음수 표현, 값의 부호변경
- 변수에 +,-를 사용한다고 해서 변수의 값이 변하는건 X
- 변수의 값을 변경하려면 대입 연산자를 사용해야한다.
-
int num = 10; System.out.println(-num); // -10 System.out.println(num); // 10 : num값이 변한게 아님 num = -num; System.out.println(num); // -10 : 대입연산자를 통해 num값을 음수로 변경
3. 산술 연산자
- +, -, *, /, //(몫), %(나머지)
- 사칙연산에 사용
4. 증가감소 연산자
- ++, --
- 단항 연산자
- 1만큼 더하거나 1만큼 뺀다.
- 항의 앞/뒤 위치에 따라 연산의 결과가 다르다.
-
int num = 10; int val = ++num; System.out.println(val); // 11 : num값을 1 증가시킨 후 val에 대입 System.out.println(num); // 11 int num = 10; int val = num++; System.out.println(val); // 10 : num값을 val에 대입한 후 num값 1 증가 System.out.println(num); // 11
5. 관계 연산자
- >, <, >=, <=, ==(동일비교), !=(다름비교)
- 이항 연산자
- 결과값 : True, False
-
boolean Bval = (5>=2); System.out.println(Bval); // True
6. 논리 연산자
- 관계연산자와 혼합하여 주로 사용
논리 연산자 | 연산 | 단락회로평가(Short Circuit Evaluation) |
&&(논리곱) | 둘 모두 참이어야 True | 앞의 항이 false면 뒤의 항을 평가하지 않아도 false |
||(논리합) | 둘 중 하나만 참이어도 True | 앞의 항이 true면 뒤의 항을 평가하지 안하도 true |
!(부정) | 단항연산자, 참/거짓을 반대로 바꿈 | - |
-
boolean booleanval = (5>3) && (3>2); // True boolean booleanval = (5>3) || (1>2); // True boolean booleanval = !(1>3); // True int num = 10; int i = 2; boolean value = (((num = num + 10) < 10) && ((i = i + 2) > 2)); System.out.println(value); // False System.out.println(num); // 20 System.out.println(i); // 2 : 단락회로평가에 의해 앞에 항이 False이므로 뒤의 항은 연산이 이루어지지 않음
7. 비트 연산자
- 정수에만 사용 가능
연산자 | 연산 | 예시 |
~ | 비트의 반전(1의 보수) | a = ~a; |
& | 비트의 단위 AND | 1 & 1; //1 그 외엔 0 |
| | 비트의 단위 OR | 0 | 0; //0 그 외엔 0 |
^ | 비트의 단위 XOR | 두 개의 비트가 서로 다를 때 1을 반환 |
<< | 비트 왼쪽으로 shift(부호비트 동일) | a<<2; //변수a를 2만큼 비트 왼쪽으로 이동 |
>> | 비트 오른쪽으로 shift(부호비트 동일) | a>>2; //변수a를 2만큼 비트 오른쪽으로 이동 |
<<< | 비트 왼쪽으로 shift(부호비트 0) | a<<<2; // <<와 동일한 연산(부호비트만 무조건 0) |
>>> | 비트 오른쪽으로 shift(부호비트 0) | a>>>2; // >>와 동일한 연산(부호비트만 무조건 0) |
- >> : 이동한 만큼 /2하는 효과(몫)
- << : 이동한 만큼 2^n하는 효과
- 한 비트 왼쪽으로 shift하면 각자리 값이 x2되므로 이동한 만큼 10진수x2^n
8. 복합 대입 연산자
- 산술연산자 + 대입연산자 = +=, -=, *=, /=, %=, //=
- 비트연산자 + 대입연산자 = <<=, >>=, <<<=, >>>=, &=, !=, ^=
- 자기자신과 연산한 결과를 다시 대입
-
int num = 10; num += 10; // num = num + 10; 과 같은 연산 System.out.println(num); // 20
9. 조건 연산자
- 조건식 ? 결과1 : 결과2;
- 삼항연산자
- 조건식의 결과가 True인 경우 결과1, False인 경우 결과2가 수행됨
- 제어문 중 조건문을 간단히 표현할 때 사용가능
-
int num = (5>3) ? 10 : 20; System.out.println(num); //10
10. 연산자 우선순위
- 일차식 : ( ), [ ], ...
- 단항 : !, ++, --, +/-
- 산술 : *, /, //, %
- 산술 : +, -
- 비트이동 : <<, <<<, >>, >>>
- 관계 : <, >, <=, >=
- 관계 : ==, !=
- 비트곱 : &
- 비트차 : ^
- 비트합 : |
- 논리곱 : &&
- 논리합 : ||
- 조건 : ?:
- 대입 : =, +=, -=, *=, /=, //=, %=, >>=, <<=, >>>=, <<<=, !=, ^=
'JAVA > 언어입문' 카테고리의 다른 글
자바(JAVA) 반복문(while, do-while, for)/ Continue/ Break (0) | 2022.03.07 |
---|---|
자바(JAVA) 조건문(if / switch-case) (0) | 2022.03.07 |
JAVA 상수(final)/리터럴/형변환(casting) (0) | 2022.03.03 |
JAVA 변수(variable)의 데이터타입(data type) - 실수형/논리형 (0) | 2022.03.03 |
JAVA 변수(variable)의 데이터타입(data type) - 문자형(char) (0) | 2022.03.02 |
댓글