목표
자바가 제공하는 다양한 연산자를 학습한다.
학습할 것
- 산술 연산자
- 비트 연산자
- 관계 연산자
- 논리 연산자
- instanceof
- assignment(=) operator
- 화살표(->) 연산자
- 3항 연산자
- 연산자 우선순위
- (optional) Java 13. switch 연산자

1. 산술 연산자
산술 연산을 할 수 있는 사칙연산(+, -, *, /)과 나머지 연산자(%)들을 말한다.
2. 비트 연산자
데이터를 비트 단위로 연산한다.
기능에 따라 비트 이동 연산자, 비트 논리 연산자로 구분한다.
1) 비트 이동 연산자(shift)



차이점 :
>>는 좌측의 빈자리를 최상위 부호 비트와 같은 값으로 채우고
>>>는 좌측의 빈자리를 0으로 채운다.(결괏값은 무조건 양수로만 나타나게 됨)
2) 비트 논리 연산자

XOR은 두 비트가 다른 경우만 1 임을 기억하자.
3. 관계 연산자
비교 연산자라고도 하며 수학에서 배운 부등호와 같다.
반환 값은 true, false 값인 boolean 자료형으로 반환이 된다.

4. 논리 연산자
논리 연산자는 AND, OR, NOT 세 가지의 연산자가 있으며, 관계 연산자와 같이 사용되는 경우가 많다.
결과는 역시 boolean 자료형으로 반환된다.

5. instanceof
객체 타입을 확인하는 데 사용하며, 형 변환이 가능한지 알려주는 연산자이다.
참조 변수가 instanceof로 형 변환 가능한 타입인지 연산하고 반환 값은 boolean형태이다.
사용 형식은 '객체 + instanceof + 클래스'이다.

세 번째 결과가 false인 이유는 클래스 A가 부모이고 B가 자식인데, 부모가 자식이 되려 했기 때문이다.
6. assignment(=) operator
오른쪽의 결과를 왼쪽에 대입하는 연산자이다.
Primitive 변수에 값을 할당하기 위해 사용하거나 Reference의 참조 값을 할당하기 위해 사용한다.
7. 화살표(->) 연산자
메서드를 하나의 식(expression)으로 표현한 것.
기존의 메서드를 람다식(화살표 연산자)으로 표현하면 메서드의 이름과 반환 값이 없어지기 때문에 익명 함수라고도 부른다.
메서드를 하나의 인수로 취급할 수 있어서, 유연한 프로그래밍을 가능하게 해 준다.
람다식은 Java 8 이후 나온 기술이다.
예를 들어 덧셈에 대한 람다식은
(a, b) -> a + b
로 나타낼 수 있다.
8. 3항 연산자
조건 연산자의 결과에 따라 다른 결과를 반환한다.

9. 연산자 우선순위

단항 -> 이항 -> 삼항 연산자 순으로 우선순위를 갖는다.
산술 -> 비교 -> 논리 -> 대입 연산자 순으로 우선순위를 갖는다.
항상 우선순위를 숙지하고 있을 수 없기 때문에 처음부터 명확히 () 괄호를 잘 써주는 것이 제일 중요하다고 생각한다.
10. (optional) Java 13. switch 연산자
자바 12부터 프리뷰로 추가되었다.
기존의 switch문에서의 :(콜론)을 ->(화살표)로 변경하여 사용할 수 있고 break문을 생략할 수 있다.

식(expression)으로 사용될 수 있어서 바로 변수로 할당할 수 있다.

break로 반환하는 문법이 자바 12에서 있었으나 자바 13에서는 yield로 변경되었다.

Reference
https://coding-factory.tistory.com/521
[Java] 비트(Shift) 연산자 사용법 & 예제
비트 연산자는 데이터를 비트 단위로 연산합니다. 그러므로 0과 1로 표현이 가능한 정수 타입만 비트 연산이 가능합니다. 비트 연산자는 기능에 따라 비트 이동연산자, 비트 논리연산자로 구분
coding-factory.tistory.com
velog.io/@foeverna/Java-연산자-관계-논리-조건-비트-연산자
[Java] 연산자 - 관계, 논리, 조건, 비트 연산자
비교 연산자라고도 하며 우리가 수학시간에 배웠던 부등호를 생각하시면 됩니다. 관계연산자의 결과는 true 혹은 false 값인 boolean 자료형으로 반환이 됩니다. 뒤에서 배울 제어문에서 많이 사용
velog.io
'Java' 카테고리의 다른 글
[스터디 5주차] 자바 클래스 (1) | 2020.12.23 |
---|---|
[스터디 4주차] 자바 제어문 (0) | 2020.12.10 |
[스터디 2주차] 자바 데이터 타입, 변수 그리고 배열 (0) | 2020.11.21 |
[스터디 1주차] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. (0) | 2020.11.21 |