[TIL][Java][2023-11-07] 연산자? 연산자의 종류

2023. 11. 7. 21:13TIL/Java

 

이번 글에서는 연산자란 무엇인지, 그리고 연산자의 종류엔 어떤 것들이 있는지 정리해보려고 한다.

Java 프로그래밍에서 변수와 상수들을 계산하기 위해서 우리는 연산자를 사용한다.

 

 

연산자와 피연산자

 

계산할 때 계산의 대상이 되는것이 피연산자, 계산의 목적이 되는것이 연산자이다.

  • 연산자 : +, -, *, /  등...
  • 피연산자 : 연산자로 인해 계산되는 숫자
int x = 5;
int y = 10;

int z = x + y; // z = x(피연산자) +(연산자) y(피연산자)

System.out.println(z); // 출력값 : 15

 

 

 

연산자의 종류

산술 연산자 +  -  *  /  %  <<  >> 사칙 연산과 비트연산
비교 연산자 >  <  >=  <=  ==  != 크고 작음과 같고 다름을 비교
논리 연산자 &&  ||  ! 그리고(AND),또는(OR)으로 조건을 연결
대입 연산자 =  ++ -- 우변의 값을 좌변에 저장,연산 복합 대입
기타 연산자 (type)  ? :  instansce of 형변환연산자, 삼항연산자, instance of

 

 

산술 연산자

  • 사칙 연산 및 비트 연산을 포함한다.
  • 사칙 연산을 계산한 결과값을 응답한다.
// 사칙 연산
System.out.println(4 + 2); // 6
System.out.println(4 - 2); // 2
System.out.println(4 * 2); // 8
System.out.println(4 / 2); // 2
System.out.println(5 / 2); // 2
System.out.println(2 / 4); // 0
System.out.println(4 % 2); // 0
System.out.println(5 % 2); // 1

// 우선 순위 연산
System.out.println(2 + 2 * 2); // 6
System.out.println((2 + 2) * 2); // 8
System.out.println(2 + (2 * 2)); // 6

// 변수를 이용한 연산
int a = 20;
int b = 10;
int c;

// 덧셈
c = a + b;
System.out.println(c); // 30

// 뺄셈
c = a - b;
System.out.println(c); // 10

// 곱셈
c = a * b;
System.out.println(c); // 200

// 나눗셈 (몫)
c = a / b;
System.out.println(c); // 2

// 나눗셈 (나머지) = 나머지 연산
c = a % b;
System.out.println(c); // 0

 

 

비교 연산자

  • 값의 크고 작음을 비교하거나, 같고 다름을 비교하여 참(true) 혹은 거짓(false) 값인 boolean값을 출력한다.
// 비교 연산자 (참이면 true, 거짓이면 false)
System.out.println(10 > 9); // 10 는 9 보다 크다 (참이면 true, 거짓이면 false)
System.out.println(10 >= 9); // 10 는 9 보다 크거나 같다 (true)
System.out.println(10 < 9); // 10 는 9 보다 작다 (false)
System.out.println(10 <= 9); // 10 는 9 보다 작거나 같다 (false)
System.out.println(10 == 10); // 10 는 10 와 같다 (true)
System.out.println(10 == 9); // 10 는 9 과 같다 (false)
System.out.println(10 != 10); // 10 는 10 와 같지 않다 (false)
System.out.println(10 != 9); // 10 는 9 과 같지 않다 (true)

 

 

논리 연산자

  • 비교 연산의 결과값으로 받을 수 있는 boolean 값을 연결하는 연산자이다.
  • 조건을 연결 하였을 때의 boolean값들을 조합하여 boolean값을 출력한다.
// 논리 연산자
boolean flag1 = true;
boolean flag2 = true;
boolean flag3 = false;

System.out.println(flag1); // true
System.out.println(flag2); // true
System.out.println(flag3); // false

// 피연산자 중 하나라도 true 이면 true
System.out.println(flag1 || flag2); // true
System.out.println(flag1 || flag2 || flag3); // true
// 피연산자 모두 true 이면 true
System.out.println(flag1 && flag2); // true (flag1, flag2 모두 true 라서)
System.out.println(flag1 && flag2 && flag3); // false (flag3은 false 라서)

// And 연산
System.out.println((5 > 3) && (3 > 1)); // 5 는 3 보다 크고, 3 은 1 보다 크다 (true)
System.out.println((5 > 3) && (3 < 1)); // 5 는 3 보다 크고, 3 은 1 보다 작다 (false)

// Or 연산
System.out.println((5 > 3) || (3 > 1)); // 5 는 3 보다 크거나, 3 은 1 보다 크다 (true)
System.out.println((5 > 3) || (3 < 1)); // 5 는 3 보다 크거나, 3 은 1 보다 작다 (true)
System.out.println((5 < 3) || (3 < 1)); // 5 는 3 보다 작거나, 3 은 1 보다 작다 (false)

// System.out.println(1 < 3 < 5); // 불가능한 코드

// 논리 부정 연산자
System.out.println(!flag1); // false (flag1 값의 반대)
System.out.println(!flag3); // true (flag3 값의 반대)
System.out.println(!(5 == 5)); // false
System.out.println(!(5 == 3)); // true

 

 

대입 연산자

  • 변수를 바로 연산해서 그 자리에 저장하는 연산자
  • 기본 대입 연산자인 = 와 다른 연산을 함께 쓰는 복합 대입 연산자가 있다.
// 대입 연산자
int number = 10;
number = number + 2;
System.out.println(number); // 12

number = number - 2;
System.out.println(number); // 10

number = number * 2;
System.out.println(number); // 20

number = number / 2;
System.out.println(number); // 10

number = number % 2;
System.out.println(number); // 0

number = number++;
System.out.println(number); // 2

number = number--;
System.out.println(number); // 0

// 복합 대입 연산자
number = 10;

number += 2;
System.out.println(number); // 12

number -= 2;
System.out.println(number); // 10

number *= 2;
System.out.println(number); // 20

number /= 2;
System.out.println(number); // 10

number %= 2;
System.out.println(number); // 0

 

 

※ 대입 연산자 중 증감 연산자 사용 시 주의할 점!

 

++ 또는 -- 를 붙이면 피연산자가 1 더해지거나 1 빼기가 되는데(증감 연산자),

피연산자의 뒤에 붙이냐 앞에 붙이냐에 따라 연산 순서가 달라진다.

 

 

기타 연산자

- 형변환 연산자

  • 전 글인 형변환에서 정리하였던 내용으로, 괄호 안에 변환할 타입을 넣으면 피연산자의 타입이 변경된다.

 

 

- 삼항 연산자

  • 비교 연산의 결과값에 따라 응답할 값을 직접 지정할 수 있는 연산자이다.
  • 세 가지 피연산자가 존재하여 삼항연산자라고 한다. (조건 / 참일 시 결과 / 거짓일 시 결과)
  • (조건) ? (참일 시 결과) : (거짓일 시 결과)
// 삼항 연산자
int x = 1;
int y = 9;

boolean b = (x == y) ? true : false;
System.out.println(b); // false

String s = (x != y) ? "정답" : "땡";
System.out.println(s); // 땡

int max = (x > y) ? x : y;
System.out.println(max); // 9

int min = (x < y) ? x : y;
System.out.println(min); // 1

 

 

- instance of 연산자

  • 피연산자가 조건에 명시된 클래스의 객체인지 비교하여 참인지 거짓인지 응답해 주는 연산자이다.
  • (객체명) instance of (클래스명)