백기선 자바 라이브 스터디 #3

Hoyoung Jung·2020년 11월 28일
0

Jshell 사용하기

우선순위같은 간단한 코드를 테스트하기엔 Jshell도 좋다. 터미널에서 jshell 또는 IntelliJ에서 tools - run jshell로 실행 가능하다.

우선순위

  1. . [] () : 참조연산자, 배열 첨자, 괄호가 제일 높다!
  2. ! ~ & | ^ - ++ --: 단항연산자도 우선순위가 높다. 부정 > bit > 부호 > 증감 순으로 우선순위를 가진다.
  3. 쉬프트 연산자: 산술보다 쉬프트 연산자가 우선순위가 높다.
  4. 산술연산자
  5. 비교연산자
  6. 논리연산자
  7. 삼항연산자
  8. 대입연산자

조금 복잡하지만 단항 > 산술 > 비교 > 논리 > 삼항 > 대입이기 때문에 자연스럽다!

산술연산자

2항 연산자

  • + - * / %
  • * / % 간의 우선순위는 동등하고 + - 보다는 높다.

단항 연산자

  • ++, --
int a = 3;
int b = 3;
a++ == 3; true
++b == 3; false

비트 연산자

&: and
|: or
^: xor
~: bitwise compliment 보수 연산자(?) 비트의 1과 0을 바꿈
<<: left shift
>>: right shift
>>> : zero fill right shift: 왼쪽을 0으로 채우므로 음수의 경우 부호가 바뀐다. 
  • 팁: 비트 연산자를 논리 연산자로 사용하면 short circuit이 동작하지 않는다.

관계 연산자

  • == != > < >= <=
  • 특이사항 없음

논리 연산자

  • && || !
  • if 문 안에서는 short circuit이 동작하므로 주의하자!
  • and의 우선순위가 or 보다 우선순위가 높다. 이것도 조심해야 함!

instanceof

null instanceof Object //false
String a = "hello"
a instanceof Object //true
List <Integer> b = new ArrayList()<>;
b instanceof List //true
b instanceof ArrayList //true

assignment(=) operator

  • 기본타입은 값을 복사
  • 참조타입은 객체의 주소값을 복사

화살표(->) 연산자

  • 람다 함수 작성에 사용됨
  • 람다는 구현 메소드가 하나 있는 인터페이스 대신에 사용될 수 있음
  • 클로저가 되므로 매우 유용하고 코드가 간결해 짐

3항 연산자

  • 편한데 사용하지 말라고 권장하는 곳이 많다.
int a = x > 3 ? 1 : 2

Java 13 switch 연산자

  • 구글링을 해 보니 yield 연산자가 추가되었다! python의 for -else 에 이어 매우 신기한 문법이 등장했다.
  • -> 오퍼레이터도 추가됨
    Day day = Day.WEDNESDAY;    
    System.out.println(
        switch (day) {
            case MONDAY, FRIDAY, SUNDAY -> 6;
            case TUESDAY                -> 7;
            case THURSDAY, SATURDAY     -> 8;
            case WEDNESDAY              -> 9;
            default -> throw new IllegalStateException("Invalid day: " + day);
        }
    );    
profile
주짓수를 좋아하는 개발자

1개의 댓글

comment-user-thumbnail
2020년 11월 28일

취미코딩하다 시간이 많이 흘러 이번주도 날림 공부했다 ㅜㅜ.

답글 달기