4 minute read

연산자와 피연산자

  • 연산자(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 =

(optional) Java 13. switch 연산자

Java operator
Java lambda

live-study with whiteship