-
자바 스터디(3주차)CS지식/java 2021. 1. 30. 15:01
많이 게을러서 약 2달동안 업로드를 못했네요.. 다시 시작하겠습니다!
- 산술 연산자
- 비트 연산자
- 관계 연산자
- 논리 연산자
- instanceof
- assignment(=) operator
- 화살표(->) 연산자
- 3항 연산자
- 연산자 우선 순위
- (optional) Java 13. switch 연산자
1. 산술연산자
- 사칙연산을 다루는 가장 기본적인 연산자를 의미
- 여러 숫자값들을 피 연산자로 받아 하나의 값으로 만들때 사용
산술연산자(기본연산자)
산술연산자(대입연산자)
2. 비트연산자
- 비트단위로 논리연산을 할 때 쓰는 연산자를 의미
- 왼쪽이나 오른쪽을 기준으로 연산을 할 수 있으며 1의 보수를 만들 때 매우 유용함
2-1) 비트연산자 AND 예시
- 파란색상단바는 15 파란색하단바는 21이고 이진수로 변환 뒤 계산을 함을 알 수 있다
- 빨간 바를 보게 되면 결과는 5가 나오게 되는 것을 알 수 있다.
2-2) 비트연산자 >> 예시
- 비트연산자를 쓸 때 음수의 경우 오른쪽으로 이동하게 되면 왼쪽에 있는 값이 '1'로 바뀌는 것을 알 수 있다
2-3) 비트연산자 >>> 예시
- >>>를 하면 양수 음수 관련 없이 비어있는 곳이 '0'으로 되게 바뀌게 된다.
3. 관계(비교) 연산자
- 관계 연산자는 피연산자의 절대적인 수치의 비교가 아닌 상대적인 비교를 하는 연산자를 의미
4. 논리 연산자
- 주어진 논리식을 판단하여 참과 거짓을 판단하는 연산자를 의미
5. instance of
- 참조변수가 참고하고 있는 실제타입을 알아보기 위해 instance of 연산자를 사용
- 실제 예시 ) 참조변수 instance of 클래스명(타입)
- 반환타입은 boolean으로 true or false 중 하나를 반환한다.
예시코드(인스턴스를 쓸 때)
결과
6. assignment(=) operator
- assignment operator은 변수에 value값을 (=)를 통해 할당하는 것을 의미합니다.
- 예를들어 'int a = 3;'을 보면 변수 'a'에 '3'이라는 데이터를 넣은 것을 볼 수 있습니다.
7. 화살표(->) 연산자
- java에서 화살표 연산자는 '람다표현식'이라고 불립니다.
- 람다표현식의 경우 메소드를 하나의 식으로 표현함으로써 클래스를 작성하거나 객체를 생성하지 않아도 메소드를 사용할 수 있게 만들어줍니다.
- java8버전부터 새로 나온 표현식이다.
예제1
예제2
예제3(함수형인터페이스 사용)
- 함수형인터페이스의 경우 한 인터페이스에 메소드를 2개를 만들 수는 없다. 이유는 파라미터가 겹치게 되면 람다에서 어떤 메소드를 호출해야 될 지 모르기 때문에 이렇게 된거같다.
8. 3항 연산자
- 기존에 if문으로 조건을 통해 값을 찾아냈던 방식을 한줄로 표현함으로써 라인수를 획기적으로 줄여주는 연산자를 말한다.
- but 3항연산자를 한다고 해서 컴파일 속도가 빨라진것은 아닙니다.
- 3항연산자를 중복으로 처리해서 할 경우 가독성 문제가 생길 수 있으므로 지양하는 것이 좋습니다.
- ?를 기준으로 왼쪽이 true 오른쪽이 false입니다.
예시)
9. 연산자 우선 순위
- 기본연산자 관련 표를 하나 첨부하겠습니다.
10. (optional) Java 13. switch 연산자
- 사실 전 보통 'java 8' 쓰고 현업에서는 'java 11'까지 해서 13은 익숙하진 않지만 궁금해서 이거 역시 해보았습니다 ㅎㅎ
- switch는 c언어 쓸 때 부터 '당연히' 이렇게 작동하지 라고 생각하고 써서 별로 공감은 하지 못했지만..
- java 12버전부터 스위치 연산자에 lambda를 쓸 수 있음을 볼 수 있습니다.
- '->'를 사용하게 되면 ':'와 다르게 'break'없어도 빠져나올 수 있습니다.
하지만 문제가 되는 경우가 존재한다.
내가 예시로 case안에 특정변수를 선언하고 그 변수에 데이터를 삽입하게 된다면 디버깅을 하는데 어려움을 겪을 문제가 생길 수 있다.
이런 문제를 해결하기 위해 java 13 부터는 yield를 사용함으로써 리턴을 하게끔 하여 개발자의 디버깅의 문제를 한 층 더 덜 수 있게끔 했다.
예시로 이 경우 내가 'TUESDAY' 데이터를 입력하게 된다면 2번째 케이스 조건에 충족하게 될 것이고 이 전에 int numLetters로 선언한 변수에 7을 삽입하고 return을 함으로써 스위치 문을 나가게 된다.
출처
coding-factory.tistory.com/266
docs.oracle.com/en/java/javase/13/language/switch-expressions.html
'CS지식 > java' 카테고리의 다른 글
자바 스터디(2주차) (0) 2020.11.21 자바 스터디(1주차) (0) 2020.11.21