- 산술 연산자
- 비트 연산자
- 관계 연산자
- 논리 연산자
- instanceof
- assignment(=) operator
- 화살표(->) 연산자
- 3항 연산자
- 연산자 우선 순위
- (optional) Java 13. switch 연산자
# 연산자
연산자라함은, 사전적 의미로는 수행되는 연산을 표시하기 위한 기호라고 한다.
자바에서는 산술/비트/관계/논리 연산자가 존재하며 그 내용은 아래와 같다.
1) 산술연산자 : 사칙연산을 하기위해 사용되는 연산자

다만 주의할 점으로는, 다른 형인 경우에는 더 큰 사이즈의 변수로 형변환을 수행하여 계산을 수행한다.

2) 비트연산자 : 비트연산을 하기위해 사용되는 연산자 (&, |, ^, >>, <<, >>>)
비트연산은 피연산자들의 값을 비트단위로 논리연산을 수행한다. 그래서 결국 이 친구는 논리연산자인건가??????

이때 주의사항으로는 아래와 같다.
a. byte일 지언정 bit 연산을 수행시는 int로 변환되서 수행된다.
b. bit shift를 수행 시, <<< 이 없는 이유는 부호를 고려할 필요가 없기 때문이다. >>> : 0으로 채울 때, >> : 해당 숫자의 부호비트로 채워짐.
3) 관계연산자 : 같다, 같지않다, 작다, 크다를 확인하기 위해 사용되는 연산자
4) 논리연산자 : 논리적인 용어(AND, OR)를 사용하여 조건을 충족하는지 확인하기 위해 사용되는 연산자
# insatnceof
instanceof는 연산자로써 (인스턴스) instanceof (클래스) 로써 형변환이 가능한지의 여부를 boolean 값으로 알려준다.

# assignment operator (=)
assgitnment operator는 대입연산자이며 위의 예시로 본다면 Person의 객체를 생성하여 Person Type의 변수 a에 대입(할당)해라 라는 의미가 될 수 있겠다.
# 삼항연산자 및 화살표연산자
삼항연산자 및 화살표연산자 모두 가독성을 해친다고 생각한다. 대신 얻는 것은 내 손이 조금 편해진다? 는..
물론 익숙하지 않아서 가독성을 해친다고 생각하는 내가 문제지
- 삼항연산자: 구성은 "조건식 ? 참일때 수행 : 거짓일때 수행" 이다. 삼항 연산자 이지만, 엑셀(?)처럼 추가적으로 조건을 더 달아줘도 최종 대입연산자를 통해 할당되는 형만 일치한다면 지장은 없다.

- 화살표연산자: 화살표 연산자는 람다식에서 사용되며 기본적인 아이디어는 아래와 같다.
: (매개변수) -> (수행될 코드)
Swift 에서는 Closure 로 사용되는데 (물론 다른 언어에서의 closure와는 다르다고 들었다) 쉽게 얘기해서 이름이 없는 함수로 이해하였다. 다만 여기서의 문제는 단순 최소값을 돌려주는 람다식을 이클립스에서 만들어봤는데 "The target type of this expression must be a functional interface" 라는 에러를 돌려줘서 다음에 다시 보충해서 코드도 작성할 예정이다;;;
# 연산자 우선순위
: 사칙연산에서 곱셈과 나눗셈이 덧셈과 뺄셈에 우선순위를 지니듯, 연산자에서도 우선순위가 존재한다.
규칙으로 분류하면 산술연산자 > 관계 연산자 > 논리연산자 > 대입연산자 이다. 합리적인 선에서 이해가 대부분 될테지만...

요런건 사실 헷갈릴 수 있는 부분이었다. 물론 IDE에서 비트연산에 괄호를 쓰라하여 우선순위를 합리적인 선에서 이해가 가게끔 도와주지만, 실제로 이런 경우에는 비교 연산자가 먼저 적용됨으로써 int형 데이터와 boolean 데이터를 & 하기 때문에 에러다.
# java 13, switch 연산자
크게 변동사항으로는 switch 연산자 + yield문을 통해 값을 돌려줄 수 있다는 내용이다.
// Before JDK 13
int httpCode = 400;
String meaning = "";
switch(httpCode) {
case 200:
meaning = "Success";
break;
(etc.....)
}
// JDK 13
int httpCode = 400;
String meaning = switch(httpCode) {
case 200:
yield "Success";
(etc....)
}
티스토리 코드블럭을 자바로 변경하는건 태블릿이라 안되는건지 정말 열받는다..
'가치코딩 [Java] > 기초문법' 카테고리의 다른 글
[Java 문법] 예외처리 (0) | 2021.01.21 |
---|---|
[Java 문법] 클래스 (0) | 2020.12.18 |
[Java 문법] 선택문 및 반복문 (0) | 2020.12.08 |
[Java 문법] 자바 데이터 타입, 변수 그리고 배열 (0) | 2020.11.18 |
[Java 문법] JVM은 무엇이며 자바 코드는 어떻게 실행 (0) | 2020.11.18 |