3주차 과제: 연산자 #3
연산자와 피연산자
- 연산자(Operator): 연산을 수행하기 위해 사용되는 문자
- 피연산자(Operand): 연산자의 연산 대상
피연산자 개수에 따른 연산자 구분
- 단항연산자(Unary Operator): 피연산자를 1개 가지는 연산자
- 이항연산자(Binary Operator): 피연산자를 2개 가지는 연산자
- 삼항연산자(Ternary Operator): 피연산자를 3개 가지는 연산자
산술 연산자(Arithmetic Operators)
사칙연산 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%)를 하는 연산자
연산자 | 설명 |
---|---|
+ | 덧셈 연산자(String 합칠 때도 씀) |
- | 뺄셈 연산자 |
* | 곱셈 연산자 |
/ | 나눗셈 연산자 |
% | 나머지 연산자(Remainder operator) |
int a = 5, b = 3;
System.out.println("a + b = " + (a + b));
System.out.println("a - b = " + (a - b));
System.out.println("a * b = " + (a * b));
System.out.println("a / b = " + (a / b));
System.out.println("a % b = " + (a % b));
a + b = 8
a - b = 2
a * b = 15
a / b = 1
a % b = 2
비트 연산자(Bitwise and Bit Shift Operators)
비트 단위의 논리 연산을 하는 연산자
연산자 | 설명 |
---|---|
~ | 비트 NOT 연산 |
<< | Signed Left 시프트 |
>> | Signed Right 시프트 |
>>> | Unsigned Right 시프트 |
& | 비트 AND 연산 |
^ | 비트 XOR 연산 |
| | 비트 OR 연산 |
int bitmask = 0x000f; // 0000 0000 0000 0000 0000 0000 0000 1111
System.out.println("~bitmask = "+(~bitmask)); // 1111 1111 1111 1111 1111 1111 1111 0000
System.out.println("bitmask << 1 = "+(bitmask << 1)); // 0000 0000 0000 0000 0000 0000 0001 1110
System.out.println("bitmask >> 1 = "+(bitmask >> 1)); // 0000 0000 0000 0000 0000 0000 0000 0111
System.out.println("bitmask >>> 1 = "+(bitmask >>> 1)); // 0000 0000 0000 0000 0000 0000 0000 0111
System.out.println("~bitmask >> 1 = "+(~bitmask >> 1)); // 1111 1111 1111 1111 1111 1111 1111 1000
System.out.println("~bitmask >>> 1 = "+(~bitmask >>> 1)); // 0111 1111 1111 1111 1111 1111 1111 1000
System.out.println("bitmask & 0x0003 = "+(bitmask & 0x0003)); // 0000 0000 0000 0000 0000 0000 0000 0011
System.out.println("bitmask ^ 0x0003 = "+(bitmask ^ 0x0003)); // 0000 0000 0000 0000 0000 0000 0000 1100
System.out.println("bitmask | 0x00f0 = "+(bitmask | 0x00f0)); // 0000 0000 0000 0000 0000 0000 1111 1111
~bitmask = -16
bitmask << 1 = 30
bitmask >> 1 = 7
bitmask >>> 1 = 7
~bitmask >> 1 = -8
~bitmask >>> 1 = 2147483640
bitmask & 0x0003 = 3
bitmask ^ 0x0003 = 12
bitmask | 0x00f0 = 255
관계 연산자(Equality and Relational Operators)
두 개의 피연산자의 관계를 확인할 때 사용하는 연산자
연산자 | 설명 |
---|---|
== | 같은지 확인 |
!= | 같지 않은지 확인 |
> | 큰지 확인 |
>= | 크거나 같은지 확인 |
< | 작은지 확인 |
<= | 작거나 같은지 확인 |
int a = 1, b = 2;
System.out.println("a == b = "+(a == b));
System.out.println("a != b = "+(a != b));
System.out.println("a > b = "+(a > b));
System.out.println("a >= b = "+(a >= b));
System.out.println("a < b = "+(a < b));
System.out.println("a <= b = "+(a <= b));
a == b = false
a != b = true
a > b = false
a >= b = false
a < b = true
a <= b = true
논리 연산자(Conditional Operators)
조건의 참, 거짓을 비교하는 연산자
연산자 | 예 | 의미 |
---|---|---|
&&(Logical AND) | 표현식1 && 표현식2 | 표현식1과 표현식2 둘 다 참일 때만 참 |
||(Logical OR) | 표현식1 || 표현식2 | 표현식1과 표현식2 둘 중 하나라도 참이면 참 |
!(Logical NOT) | !표현식 | 표현식의 NOT true면 false |
int v1 = 1, v2 = 2;
if((v1 == 1) && (v2 == 2))
System.out.println("v1이 1이고 v2가 2면 출력");
if((v1 == 1) || (v2 == 1))
System.out.println("v1이 1이거나 v2이 1이면 출력");
if(!(v1 == 2))
System.out.println("v1이 2가 아니면 출력");
v1이 1이고 v2가 2면 출력
v1이 1이거나 v2이 1이면 출력
v1이 2가 아니면 출력
instanceof
객체가 특정 클래스의 인스턴스인지 아닌지를 확인하는 연산자
String str = "Hello World";
if(str instanceof String)
System.out.println("str은 String 클래스의 객체입니다.");
str은 String 클래스의 객체입니다.
assignment(=) operator
변수에 값을 할당할 때 쓰는 연산자
int age;
age = 34;
연산자 | 예 | 동등 |
---|---|---|
= | a = b; | a = b; |
+= | a += b; | a = a + b; |
-= | a -= b; | a = a - b; |
*= | a *= b; | a = a * b; |
/= | a /= b; | a = a / b; |
%= | a %= b; | a = a % b; |
화살표(->) 연산자(Lambda Expressions)
식별자없이 실행가능한 함수
// (매개변수, ...) -> {실행문 ...}
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
numbers.forEach( (n) -> { System.out.println(n); } );
1
2
3
4
3항 연산자(Ternary Operator)
피연산자가 3개인 연산자
조건식 ? (표현식1) : (표현식2);
boolean b = 1 < 10 ? true : false; // 조건식 ? 참인 경우 : 거짓인 경우
System.out.println(b);
true
연산자 우선 순위
우선순위 | 연산자 |
---|---|
1 | () [] . |
2 | ++ – ~ ! |
3 | * / % |
4 | + - |
5 | >> >>> << |
6 | > >= < <= |
7 | == != |
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | || |
13 | ?: |
14 | = |