3주차 과제

dondonh·2020년 11월 27일
0

whiteshipjavastudy

목록 보기
2/2

학습 목표

자바가 제공하는 다양한 연산자를 학습하세요.

학습할 것

  1. 산술 연산자
  2. 비트 연산자
  3. 관계 연산자
  4. 논리 연산자
  5. instanceof
  6. assignment(=) operator
  7. 화살표(->) 연산자
  8. 3항 연산자
  9. 연산자 우선 순위
  10. (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

profile
일하면서 공부하면서 끄적끄적하는 공간임

0개의 댓글