[Java] 자바 연산자 (JAVA Operator)

케이·2022년 8월 7일
0

JAVA

목록 보기
7/17
post-thumbnail

학습한 내용을 정리한 포스팅입니다. 직역된 부분이 있어 어색할 수 있습니다. 틀린 부분이 있다면 언제든 지적 해주시면 감사하겠습니다. 🙇🏻‍♀️

자바 연산자 (JAVA Operator)
자바에서는 여러 종류의 연산을 수행하기 위한 다양한 연산자를 제공한다.

산술 연산자 (arithmetic operator)

  • 사칙연산을 다루는 연산자
  • 산술 연산자는 프리미티브 숫자 타입일 때 사용할 수 있다.
산술 연산자설명
+왼쪽의 피연산자에 오른쪽의 피연산자를 더함
-왼쪽의 피연산자에 오른쪽의 피연산자를 뺌
*왼쪽의 피연산자에 오른쪽의 피연산자를 곱함
/왼쪽의 피연산자에 오른쪽의 피연산자를 나눔
%왼쪽의 피연산자에 오른쪽의 피연자로 나눈 후 그 나머지를 반환

비트 연산자 (bitwise operator)

  • 논리 연산자와 비슷하지만 비트(bit) 단위로 논리 연산을 할 때 사용하는 연산자.
  • 비트 단위로 왼쪽이나 오른쪽으로 전체 비트를 이동하거나 1의 보수를 만들 때 사용한다.
비트 연산자설명
&대응되는 비트가 모두 1이면 1을 반환함(비트 AND연산)
OR대응되는 비트 중에서 하나라도 1이면 1을 반환함(비트 OR 연산)
^대응되는 비트가 서로 다르면 1을 반환함(비트 XOR 연산)
~비트를 1이면 0으로, 0이면 1로 반전 시킴(비트 NOT의 연산, 1의 보수)
<<명시된 수만큼 비트들을 전부 왼쪽으로 이동 시킴(left shift 연산)
>>부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴(right shift 연산)
>>>지정한 수만큼 비트를 전부 오른쪽으로 이동시키며 새로운 비트는 전부 0이 됨

관계 연산자 (relational operator)

  • 관계 연산자는 비교 연산자(comparison operators)라고도 불린다.
  • 두 개의 피연산자를 가지는 이항 연산자 (두 값을 비교하기 위해서 사용한다.)
비교연산자설명
==왼쪽의 피연산자와 오른쪽의 피연산자가 같으면 참을 반환함
!=왼쪽의 피연산자와 오른쪽의 피연산자가 같지 않으면 참을 반환함
>왼쪽의 피연산자가 오른쪽의 피연산자보다 크면 참을 반환함
>=왼쪽의 피연산자가 오른쪽의 피연산자보다 크거나 같으면 참을 반환함
<왼쪽의 피연산자가 오른쪽의 피연산자보다 작으면 참을 반환함
<=왼쪽의 피연산자가 오른쪽의 피연산자보다 작거나 같으면 참을 반환함

논리 연산자 (logical operator)

  • 자바의 논리 연산자는 AND와 OR이다. 이 둘은 AND 게이트, OR 게이트와 상당히 흡사하다.
  • 논리 연산자는 주어진 논리식을 판단하여 참과 거짓을 결정하는 연산자
  • AND, OR 연산은 두 개의 피연산자를 가지는 이항 연산자이며 피연산자들의 결합 방향은 왼쪽에서 오른쪽이다.
  • NOT 연산자는 피연산자가 단 하나뿐인 단항 연산자이며 피연산자의 결합방향은 오른쪽에서 왼쪽이다.
    (참고한 baeldung 글에서는 논리 연산자 안에 NOT이 포함되어 있지 않다)
논리연산자설명
&&논리식이 모두 참이면 참을 반환함 (논리 AND 연산)
OR논리식 중에서 하나라도 참이면 참을 반환함 (논리 OR 연산)
!논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함 (논리 NOT 연산)

진리표


instanceof

  • instanceof 연산자는 참조변수가 참조하고 있는 인스턴스의 실제 타입을 반환한다. 즉, 해당 객체가 어떤 클래스나 인터페이스로 부터 생성되어 있는지 판별해 주는 역할을 한다.
  • 문법: 인스턴스이름 instanceof 클래스 또는 인터페이스 이름
  • 예시
boolean resultTrue = Long.valueOf(20) instanceof Number;

assignment(=) operator (대입 연산자)

Assignment operator(대입 연산자)는 변수에 값을 할당하기 위해서 사용한다.

The Simple Assignment Operator

예시)

int x = 10;

Compound Assignments (복합 대입 연산자)


화살표(->) 연산자

  • 자바8에서 등장한 람다 표현식이다.
  • 문법: (매개변수) -> {실행문}
  • 오른쪽 중괄호의 실행문 블록을 실행하기 위해 필요한 매개변수 값을 왼쪽 괄호에서 제공한다. 즉, 매개변수를 이용해서 중괄호 {}를 실행한다 라고 해석하면 된다.
  • 예시
Runnable r = ()-> System.out.printf("Run method");

위의 람다식을 풀어쓴다면 아래와 같다.

Runnable r = new Runnable(){
		@Override
        public void run(){
        	System.out.print("Run method");
        }
};

3항 연산자 (ternary operator)

  • 자바에서 유일하게 피연산자를 세 개 가지는 조건 연산자
  • 문법: 조건식 ? 반환값1 : 반환값2
    - 물음표 앞의 조건식에 따라 결과값이 참이면 반환값1을 반환하고 결과값이 거짓이면 반환값2를 반환한다.

연산자 우선 순위

우선순위연산자설명결합 방향
1[]첨자 연산자왼쪽에서 오른쪽
.멤버 연산자왼쪽에서 오른쪽
2++후위 증가 연산자왼쪽에서 오른쪽
--후위 감소 연산자왼쪽에서 오른쪽
3!논리 NOT 연산자오른쪽에서 왼쪽
~비트 NOT 연산자오른쪽에서 왼쪽
+양의 부호 (단항 연산자)오른쪽에서 왼쪽
-음의 부호(단항 연산자)오른쪽에서 왼쪽
++전위 증가 연산자오른쪽에서 왼쪽
--전위 감소 연산자오른쪽에서 왼쪽
(타입)캐스트 연산자오른쪽에서 왼쪽
4*곱셈 연산자왼쪽에서 오른쪽
/나눗셈 연산자왼쪽에서 오른쪽
%나머지 연산자왼쪽에서 오른쪽
5+덧셈 연산자(이항 연산자)왼쪽에서 오른쪽
-뺄셈 연산자왼쪽에서 오른쪽
6<<비트 왼쪽 시프트 연산자왼쪽에서 오른쪽
>>부호 비트를 확장하면서 비트 오른쪽 시프트왼쪽에서 오른쪽
>>>부호 비트까지 모두 오른쪽 시프트왼쪽에서 오른쪽
7<관계 연산자(보다 작은)왼쪽에서 오른쪽
<=관계 연산자(보다 작거나 같은)왼쪽에서 오른쪽으로
>관계 연산자(보다 큰)왼쪽에서 오른쪽
>=관계 연산자(보다 크거나 같은)왼쪽에서 오른쪽
instanceof인스턴스의 실제 타입 반환왼쪽에서 오른쪽
8==관계 연산자(와 같은)왼쪽에서 오른쪽
!=관계 연산자(와 같지 않은)왼쪽에서 오른쪽
9&비트 AND 연산자왼쪽에서 오른쪽
10^비트 XOR 연산자왼쪽에서 오른쪽
11비트 OR 연산자왼쪽에서 오른쪽
12&&논리 AND 연산자왼쪽에서 오른쪽
13논리 OR 연산자왼쪽으로 오른쪽
14? :삼항 조건 연산자오른쪽에서 왼쪽
15=대입 연산자 및 복합 대입 연산자오른쪽에서 왼쪽

출처: http://www.tcpschool.com/java/java_operator_arithmetic


느낀점

자바를 처음 배울 때 해당 내용들을 배웠던 기억이 난다. 하지만 실제로 개발을 할 때 많이 쓰는 연산자만 기억하고 그 밖의 연산자들은 까맣게 잊고 있었는데 이번 정리를 통해서 어떤 연산자들이 있었는지 복기해볼 수 있었다.


참고

http://www.tcpschool.com/java/java_operator_arithmetic
https://www.w3schools.com/java/java_operators.asp
https://www.baeldung.com/java-operators
https://stackoverflow.com/questions/15146052/what-does-the-arrow-operator-do-in-java

profile
삽질하며 깨닫고 배웁니다. (a.k.a 프로삽질러) + 이 구역의 회고왕

0개의 댓글