목표
자바가 제공하는 다양한 연산자를 학습하세요.
학습내용
산술 연산자
비트 연산자
관계 연산자
논리 연산자
instanceof
assignment(=) operator
화살표(->) 연산자
3항 연산자
연산자 우선 순위
(optional) Java 13. switch 연산자
연산자(operator)
자바에서는 여러 종류의 연산을 수행하기 위한 다양한 연산자를 제공하고 있다.
산술 연산자(arithmetic operator)
산술 연산자는 사칙연산을 다루는 연산자로, 가장 기본적이면서도 가장 많이 사용되는 연산자이다.
산술 연산자는 모두 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽이다.
ex) +, -, *, /, %
비트 연산자(bitwise operator)
비트 연산자는 논리 연산자와 비슷하지만, 비트(bit) 단위로 논리 연산을 할 때 사용하는 연산자이다.
또한, 비트 단위로 왼쪽이나 오른쪽으로 전체 비트를 이동하거나, 1의 보수를 만들 때도 사용된다.
ex) &, |, ^, ~, <<, >>, >>>
관계 연산자(relational operator)
관계 연산자는 피연산자 사이의 상대적인 크기를 판단하는 연산자이다.
관계 연산자는 왼쪽의 피연산자와 오른쪽의 피연산자를 비교하여, 어느 쪽이 더 큰지, 작은지, 또는 서로 같은지를 판단한다.
관계 연산자는 모두 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽이다.
ex) ==, !=, <, >, =<, =>
논리 연산자(logical operator)
논리 연산자는 주어진 논리식을 판단하여, 참(true)과 거짓(false)을 결정하는 연산자이다.
AND 연산과 OR 연산은 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽이다.
NOT 연산자는 피연산자가 단 하나뿐인 단항 연산자이며, 피연산자의 결합 방향은 오른쪽에서 왼쪽이다.
ex) &&, ||, !
instanceof
instanceof는 객체 타입을 확인하는 연산자이다. 형변환 가능여부를 확인하며 true / false 로 결과를 반환한다.
아래와 같은 경우에 사용할 수 있다.
1. 해당 변수가 어떤 클래스(class)에서 생성된 객체(object)인지를 확인할 때
2. 해당 변수가 부모 클래스(parent class)에서 상속받은 클래스인지를 확인할 때
3. 해당 변수가 클래스의 인스턴스(instance)인지 아닌지를 확인할 때
4. 해당 변수가 인터페이스(interface)로 구현한 클래스의 객체 인스턴스(object instance)인지 아닌지를 확인할 때
대입 연산자(assignment operator)
대입 연산자는 변수에 값을 대입할 때 사용하는 이항 연산자이며, 피연산자들의 결합 방향은 오른쪽에서 왼쪽이다.
자바에서는 대입 연산자와 다른 연산자를 결합하여 만든 다양한 복합 대입 연산자를 제공한다.
ex) =, +=, -=, *=, /=, %=, &=
화살표(->) 연산자
화살표 연산자는 Java 8 버전부터 추가된 것으로, 람다 표현식과 함께 사용된다.
람다표현식
메소드를 람다 표현식으로 표현하면, 클래스를 작성하고 객체를 생성하지 않아도 메소드를 사용할 수 있다.
그런데 자바에서는 클래스의 선언과 동시에 객체를 생성하므로, 단 하나의 객체만을 생성할 수 있는 클래스를 익명 클래스라고 한다.
따라서 자바에서 람다 표현식은 익명 클래스와 같다고 할 수 있다.
이러한 람다 표현식은 메소드의 매개변수로 전달될 수도 있으며, 메소드의 결괏값으로 반환될 수도 있다. 따라서 람다 표현식을 사용하면, 기존의 불필요한 코드를 줄여주고, 작성된 코드의 가독성을 높여준다.
자바에서 람다 표현식을 작성할 때 유의해야 할 사항은 다음과 같다.
1. 매개변수의 타입을 추론할 수 있는 경우에는 타입을 생략할 수 있다.
2. 매개변수가 하나인 경우에는 괄호(())를 생략할 수 있다.
3. 함수의 몸체가 하나의 명령문만으로 이루어진 경우에는 중괄호({})를 생략할 수 있다. (이때 세미콜론(;)은 붙이지 않음)
4. 함수의 몸체가 하나의 return 문으로만 이루어진 경우에는 중괄호({})를 생략할 수 없다.
5. return 문 대신 표현식을 사용할 수 있으며, 이때 반환값은 표현식의 결괏값이 된다. (이때 세미콜론(;)은 붙이지 않음)
삼항 연산자(ternary operator)
삼항연산자는 조건식의 참/거짓에 따라 값을 반환한다. 조건식이 먼저 성립되며, 후미에 참/거짓에 따른 반환값을 작성한다.
조건식 ? 반환값1 : 반환값2
물음표(?) 앞의 조건식에 따라 결괏값이 참(true)이면 반환값1을 반환하고, 결괏값이 거짓(false)이면 반환값2를 반환한다.
연산자 우선 순위
자바에서 연산자는 우선순위가 빠른 순서대로 동작한다. 우선순위가 동일한 연산자가 둘 이상 있다면, 결합 순서에 따라 동작 순서가 정해진다.
- 최우선연산자 ., [], ()
- 단항연산자 ++,--,+,-,~,!
- 산술연산자 *,/,%,+,-
- 시프트연산자 >>,<<,>>>
- 비교연산자 >,<,>=,<=,==,!=
- 비트연산자 &,^,|
- 논리연산자 &&,||
- 삼항연산자 ? :
- 대입연산자 =, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, |=, ^=
Java 13. switch 연산자
자바12부터 프리뷰로 추가됐다.(13에서 정식 적용 된 것으로 보인다.) switch 구문에서 연산자 사용이 확대되었다.
1. 화살표연산자(->)를 : 대신 사용할 수 있게 되었다.
2. yield 기능을 이용하여 값을 반환할 수 있다.
참조
https://github.com/whiteship/live-study/issues/3
3주차 과제: 연산자 · Issue #3 · whiteship/live-study
목표 자바가 제공하는 다양한 연산자를 학습하세요. 학습할 것 산술 연산자 비트 연산자 관계 연산자 논리 연산자 instanceof assignment(=) operator 화살표(->) 연산자 3항 연산자 연산자 우선 순위 (option
github.com
http://tcpschool.com/java
https://velog.io/@maigumi/자바-연산자-2
'Programming Language > java' 카테고리의 다른 글
[whiteship_java_study]5주차. 클래스(Class) (0) | 2021.07.22 |
---|---|
[whiteship_java_study]4주차. 제어문 (0) | 2021.07.17 |
[whiteship_java_study]2주차. 자바 데이터 타입, 변수 그리고 배열 (0) | 2021.06.22 |
[whiteship_java_study]1주차. 자바 소스파일(.java)을 JVM으로 실행하는 과정 이해 (0) | 2021.06.20 |
자바 프로그래밍 언어용 유닛 테스트 프레임워크 JUnit5 (0) | 2020.11.19 |