Java - 연산자

이호인·2022년 7월 31일
0

자바 기초

목록 보기
2/4

📌 연산자

  • 연산자 : 어떠한 기능을 수행하는 기호 (+,-,*,/ 등)
  • 피연산자 : 연산자의 작업 대상 (변수, 상수, 리터럴, 수식)

📌 연산자의 종류

  1. 산술 연산자(arithmetic operator)
  2. 대입 연산자(assignment operator)
  3. 증감 연산자(increment and decrement operators)
  4. 비교 연산자(comparison operator)
  5. 논리 연산자(logical operator)
  6. 삼항 연산자(ternary operator)
  7. instanceof 연산자
  • 모두 억지로 외우려고 하기보다 필요할 때마다 참조하는 것이 좋다.

📌 1. 산술연산자

  • 산술 연산자는 사칙연산을 다루는 연산자
  • 가장 기본적이면서 가장 많이 사용되는 연산자 중 하나
  • 이항 연산자
  • 결합 방향 : 왼쪽에서 오른쪽
산술 연산자설명
+왼쪽의 피연산자에 오른쪽의 피연산자를 더한다.
-왼쪽에 피연산자에 오른쪽의 피연산자를 뺀다.
*왼쪽의 피연산자에 오른쪽의 피연산자를 곱한다.
/왼쪽의 피연산자에 오른쪽의 피연산자로 나눈다.
%왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환한다.

특히 % 나머지 연산자는 배수를 구하는 등 많이 쓰이니 잘 알아두자. 보통 짝수, 홀수 또는 배수 검사 등에 주로 사용된다.

📌 2. 대입 연산자

  • 대입 연산자는 변수에 값을 대입할 때 사용하는 연산자
  • 이항 연산자
  • 결합 방향 : 오른쪽에서 왼쪽
  • 자바에서는 대입 연산자를 다른 연산자를 결합하여 만든 다양한 대입 연산자를 제공
대입 연산자 설명
= 왼쪽의 피연산자에 오른쪽의 피연산자를 대입함.
+= 왼쪽의 피연산자에 오른쪽의 피연산자를 더한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
-= 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺀 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
*= 왼쪽의 피연산자에 오른쪽의 피연산자를 곱한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
/= 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
%= 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 왼쪽의 피연산자에 대입함.
&= 왼쪽의 피연산자를 오른쪽의 피연산자와 비트 AND 연산한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
|= 왼쪽의 피연산자를 오른쪽의 피연산자와 비트 OR 연산한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
^= 왼쪽의 피연산자를 오른쪽의 피연산자와 비트 XOR 연산한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
<<=

왼쪽의 피연산자를 오른쪽의 피연산자만큼 왼쪽 시프트한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.

>>= 왼쪽의 피연산자를 오른쪽의 피연산자만큼 부호를 유지하며 오른쪽 시프트한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
>>>= 왼쪽의 피연산자를 오른쪽의 피연산자만큼 부호에 상관없이 오른쪽 시프트한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.

📌 3. 증감 연산자

  • 증감 연산자는 피연산자를 1씩 증가 혹은 감소 시킬 때 사용하는 연산자
  • 단항 연산자 (피연산자가 하나)
증감 연산자 설명
++x 먼저 피연산자의 값을 1 증가시킨 후에 해당 연산을 진행함.
x++ 먼저 해당 연산을 수행하고 나서, 피연산자의 값을 1 증가시킴.
--x 먼저 피연산자의 값을 1 감소시킨 후에 해당 연산을 진행함.
x-- 먼저 해당 연산을 수행하고 나서, 피연산자의 값을 1 감소시킴.

📌 4. 비교 연산자

  • 비교 연산자는 피연산자 사이의 상대적인 크기를 판단하는 연산자
  • 왼쪽의 피연산자와 오른쪽의 피연산자를 비교 (큰지, 작은지, 서로 같은지)
  • 이항 연산자
  • 결합 방향 : 왼쪽에서 오른쪽
비교 연산자 설명
== 왼쪽의 피연산자와 오른쪽의 피연산자가 같으면 참을 반환함.
!= 왼쪽의 피연산자와 오른쪽의 피연산자가 같지 않으면 참을 반환함.
> 왼쪽의 피연산자가 오른쪽의 피연산자보다 크면 참을 반환함.
>= 왼쪽의 피연산자가 오른쪽의 피연산자보다 크거나 같으면 참을 반환함.
< 왼쪽의 피연산자가 오른쪽의 피연산자보다 작으면 참을 반환함.
<= 왼쪽의 피연산자가 오른쪽의 피연산자보다 작거나 같으면 참을 반환함.

📌 5. 논리 연산자

  • 논리 연산자는 주어진 논리식을 판단하여, 참 or 거짓을 결정하는 연산자
  • AND , OR -> 이항 연산자 / 결합 방향 : 왼쪽에서 오른쪽
  • NOT -> 단항 연산자 / 결합 방향 : 오른쪽에서 왼쪽
논리 연산자 설명
&& 논리식이 모두 참이면 참을 반환함. (논리 AND 연산)
|| 논리식 중에서 하나라도 참이면 참을 반환함. (논리 OR 연산)
! 논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함. (논리 NOT 연산)
  • 다음은 논리 연산자의 모든 동작의 결과를 보여주는 진리표(truth table)
A B A && B A || B !A
true true true true false
true false false true false
false true false true true
false false false false true

📌 6. 삼항 연산자

  • 삼항 연산자는 자바에서 유일하게 피연산자를 세 개 가지는 조건 연산자
  • 문법
조건식 ? 반환값1 : 반환값2
int a = 5, b = 7;
int result;

result = (a - b > 0) ? a : b; // a - b는 0보다 작으므로 false -> b를 반환하게 된다.

System.out.println("두 정수 중 더 큰 수는 " + result + "입니다.");
// 출력 : 두 정수 중 더 큰 수는 7입니다.
  • 추가 정리
    - 삼항연산자는 사용 시 코드를 좀 더 간결하게 작성할 수 있는 장점을 가지고 있다.
    - 하지만 코드가 짧다고 무조건 if문보다 속도가 빠르진 않다.
    - 한 줄에 조건식과 결과 값이 모여 있어 줄 단위 디버깅을 할 때 불편하다.
    - 무분별한 사용보다 가독성을 해치지 않고 코드가 간결해지는 간단한 로직일 때 써야한다.

📌 7. instanceof 연산자

  • instanceof연산자는 참조 변수가 참조하고 있는 인스턴스의 실제 타입을 반환해주는 연산자
  • 해당 객체가 어떤 클래스나 인터페이스로부터 생성되었는지를 판별해주는 역할
  • 문법
인스턴스 이름 instanceof 클래스 또는 인터페이스 이름
  • 왼쪽 피연산자인 인스턴스가 오른쪽 피연산자인 클래스나 인터페이스로부터 생성되었으면 true, 그렇지 않으면 false를 반환
class A {}
class B extends A{}
public static void main (String[] args) {
	A a = new A();
    B b = new B();
    
    System.out.println(a instanceof A); // true
    System.out.println(b instanceof A); // true
    System.out.println(a instanceof B); // false
    System.out.println(b instanceof B); // true

}

📌 순서 및 결합 방향 정리

reference!

[JAVA] 삼항연산자이란? 사용법 & 예제
http://www.tcpschool.com/java/java_operator_arithmetic
http://www.tcpschool.com/java/java_operator_assignment
http://www.tcpschool.com/java/java_operator_incAndDec
http://www.tcpschool.com/java/java_operator_comparison
http://www.tcpschool.com/java/java_operator_logic
http://www.tcpschool.com/java/java_operator_etc
자바의 정석 [기초편]

profile
공부 기록

0개의 댓글