3주차 과제
학습 목표
자바가 제공하는 다양한 연산자를 학습하세요.
학습할 것
- 산술 연산자
- 비트 연산자
- 관계 연산자
- 논리 연산자
- instanceof
- assignment(=) operator
- 화살표(->) 연산자
- 3항 연산자
- 연산자 우선 순위
- (optional) Java 13. switch 연산자
산술 연산자
사칙연산 및 나머지연산 이렇게 나눈다.
+, -, *, /, %, ++, --
'+ 더하기 연산자이다.
'- 빼기 연산자이다.
'* 곱하기 연산자이다.
'/ 나누기 연산자이다.
'% 나머지 연산자이다.
++ 1만큼 더하기 연산자이다.
-- 1만큼 빼기 연산자이다.
비트 연산자
모든 비트는 1과 0으로 이루어져있고 컴퓨터에 사용되고 있는 모든 숫자는 1과 0으로 표현이 가능하다. 빌요에 따라서 비트 연산자를 사용하는 경우가 종종있다. 0 과 1이 연산되는 방법이다. 아래와 같다.
&, |, ^, ~, <<, >>, >>>
1 - 참, 0 - 거짓
& 는 AND 연산자이다.
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
하나라도 0이면 0이라고 생각하면 된다.
| 은 OR 연산자이다
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
하나라도 1 이면 1이라고 생각하면 된다.
^ 은 XOR 연산자이다
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
서로 다르면 1이라고 한다. 하나라도 다르면 1이다.
서로 같으면 0이다.
~ 은 NOT 연산자이다
~1 = 0
~0 = 1
비트를 반대로 반전시킨다.
<< 왼쪽의 피연산자를 오른쪽 피연산자 만큼 왼쪽으로 이동시키고 빈자리는 0으로 채운다.
int seven = 0b0000 0000 0000 0111
int result = seven << 2;
//result 는 0b0000 0000 0001 1100
>> 왼쪽의 피연산자를 오른쪽 피연산자 만큼 오른쪽으로 이동시키고 부호유지를 위해서 빈자리는 가장 왼쪽 비트로 채운다.
int seven = 0b0000 0000 0000 0111
int result = seven >> 2;
//result 는 0b0000 0000 0000 0001
>>> 이것은 부호 없는 비트 이동 연산자이다. 오른쪽으로 이동후에 남겨진 공간은 0으로 채우는것이다.
int seven = 0b1111 1111 1100 0000
int result = seven >>> 2;
//result 는 0b0011 1111 1111 0000
관계 연산자
<, >, <=, >=, ==, != 이렇게 있다. 리턴값은 Boolean 값인 참, 거짓으로 나온다.
<, >, <=, >= 이것은 피연산자들이 숫자이다. 피연산자의 대소 비교를 하게된다.
==, != 이것은 피연산자들이 같은지 안같은지를 확인한다. 피연산자로 오는것은 모든 타입이 올수있고 레퍼런스를 비교할때는 동일한 객체(동일한 주소)를 참조하는지 비교하게된다.
논리 연산자
&&, ||, ! 이렇게 구성되어있다.
&& 이것은 AND 연산을 하는 연산자이다. 피연산자들로는 Boolean 값이 온다.
|| 이것은 OR 연산을 하는 연산자이다. 피연산자들로는 Boolean 값이 온다.
! 단항 연산자 NOT연산을 하는 연산자이다. 피연산자들로는 Boolean 값이 온다.
instanceof
instanceof 연산자는 객체의 타입을 비교하는 연산자이다. 이것을 이용해 해당 객체가 어떤 클래스의 인스턴스인지 아닌지 판단할수있습니다.
Animal ani1 = new Animal();
Animal ani2 = new Dog();
ani1 instanceof Animal // True
ani1 instanceof Dog // False
ani1 instanceof Barkable // False
ani2 instanceof Animal // True
ani2 instanceof Dog // True
ani2 instanceof Barkable // True
class Animal {}
interface Barkable {}
class Dog extends Animal implements Barkable {}
assignment(=) operator
대입 또는 할당 연산자라고 한다.
오른쪽의 피연산자를 왼쪽의 피연산자 값으로 대입한다.
그리고 코드의 길이를 줄이기 위해 다른연산자와 함께 줄임으로도 사용가능하다.
+=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, |=, ^= 이렇게 존재한다.
int test = 0;
여기서 test가 변수, 0이 리터럴
test = test + 1
test += 1
이런식으로 줄일 수 있다.
화살표(->) 연산자
람다 표현식에서 사용하는 연산자이다. 람다는 이름없는 함수, 내포함수, nested function이라고도 불린다. 자바 8부터 도입되었다. 함수형 인터페이스(인터페이스에 함수가 1개만 있는 인터페이스)에서만 사용 할 수 있다. 메서드를 객체생성하지 않아도 즉흥적으로 구현가능해서, 간결한 코드를 쓸 수 있지만, 재사용이 불가능하고 디버깅이 어려운 단점도있다.
매개변수가 있을경우에는
(매개변수) -> 표현하고싶은코드 or (매개변수) -> {표현하고싶은 코드}
매개변수가 없는경우에는
() -> 표현하고싶은코드 or () -> {표현하고싶은 코드}
public interface MyNumber {
int getMax (int num1, int num2);
}
MyNumber max = (x, y) -> (x >= y) ? x : y;
출처: https://coding-factory.tistory.com/265
3항 연산자
피연산자가 3개인 연산자를 이름하여 3항 연산자라고한다.
{조건} ? {참일 경우 실행} : {거짓 경우 실행}
public interface MyNumber {
int getMax (int num1, int num2);
}
MyNumber max = (x, y) -> (x >= y) ? x : y;
int a = 2;
int b = (a > 0) ? 2 : 3; // b 는 2 이다.
출처:
https://coding-factory.tistory.com/265
https://velog.io/@pond1029/operator
연산자 우선 순위
연산자 우선순위: 여러가지 연산자가 있으면 우선순위에 따라 먼저 계산한다
연산자 결합법칙: 동일한 연산자 우선순위가 있을때 -> 이렇게되면 왼쪽에서 오른쪽이라는 뜻이다.
(optional) Java 13. switch 연산자
Do it later
Author And Source
이 문제에 관하여(3주차 과제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hong918kr/3주차-과제저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)