티스토리 뷰
목표
자바가 제공하는 다양한 연산자를 학습하세요.
학습할 것
- 산술 연산자
- 비트 연산자
- 관계 연산자
- 논리 연산자
- instanceof
- assignment(=) operator
- 화살표 (->) 연산자
- 3항 연산자
- 연산자 우선 순위
- (optional) Java 13. switch 연산자
1. 산술 연산자
- 기본적으로 +, -, *, /, % 가 있다.
- / 연산자는 % 연산자와 구별되며 몫을 나타내준다.
- 정수를 나누는 경우 소숫점 아래의 값은 표현해주지 않는다.
- 실수 타입에서는 자동으로 실수형으로 변환된다.
- 정수 값을 0으로 나누는 것을 허용하지 않는다.
- 만약 0으로 나누는 경우 ArithmeticException 을 발생시킨다
- 만약 실수 값을 0.0 으로 나눈다면 Infinity 라고 출력된다.
- 결과가 Infinity 인지 확인하기 위해서는 Double.isInfinite() 메소드를 이용한다
- 또한, 실수 값을 나눴을때 소수점 이하의 값이 무한히 지속된다면 소수점 표기가 오류나는 것이다.
- 이러한 오류를 없애기 위해서는 BigDecimal 클래스를 이용한다.
- % 연산자는 숫자값을 나눴을 때 나머지가 오는 연산자이다.
- / 연산자와 동일하게 0으로 나누는 경우에 ArithmeticException 을 발생시킨다.
- 하지만 0.0 으로 나누는 경우에는 NaN (Not a Number) 라는 특수한 값을 출력한다.
- / 연산자와 마찬가지로 Double.isNaN() 메소드를 통해 확인할 수 있다.
2. 비트 연산자
연산자 | 논리 | 설명 |
& | AND | 두 비트가 모두 1인경우 에만 1 나머지는 0 |
| | OR | 두 비트 중 하나가 1이라면 1 나머지는 0 |
^ | XOR | 비교하는 두 비트가 서로 다르다면 1 같다면 0 |
~ | NOT | 비트의 반전 (1의 보수) |
- Left Shift <<
- a << b
- 정수 a의 각 비트를 b 만큼 왼쪽으로 이동, 밀려난 오른쪽 비트는 버려지고 왼쪽 비트는 0으로 채워진다.
- Right Shift >>
- a >> b
- 정수 a의 각 비트를 b 만큼 오른쪽으로 이동, 밀려난 왼쪽 비트는 버려지고 오른쪽 비트는 최상위 부호 비트로 채워진다.
- 음수 1, 양수 0
- Unsigned Right Shift >>>
- a >>> b
- 정수 a의 각 비트를 b 만큼 오른쪽으로 이동, 밀려난 왼쪽 비트는 버려지고 오른쪽 비트는 0으로 채워진다.
3. 관계 연산자
- 대소 연산자 ( <, >, <=, >= ) 는 boolean 타입을 제외한 기본 타입에 사용
- 동등 연산자 ( ==, != ) 는 모든 타입에 사용
4. 논리 연산자
- AND ( & ) : T & T -> T
- OR ( | ) : F | F -> F
- XOR ( ^ ) : T ^ T -> T, N ^ N -> T
- NOT ( ! ) : T -> F, F -> T
- && 는 앞의 피연산자가 false 이면 뒤의 피연산자를 확인하지 않고 false
- || 는 앞의 피연산자가 true 이면 뒤의 피연산자를 확인하지 않고 true
5. instanceof
- instanceof 연산자는 객체가 특정 타입의 인스턴스로 형변환을 할 수 있는지 검증하는데 사용된다.
- 객체 instanceof 타입 -> return boolean
- 객체가 null 이라면 instanceof 는 항상 false를 리턴한다.
- instanceof 연산자가 내부적으로 null 체크를 해주기 때문에 따로 체크할 필요가 없다.
6. assignment(=) operator
- 대입 연산자는 모든 연산자들 중에서 가장 낮은 연산순위를 가지고 오른쪽에서 왼쪽으로 진행된다.
- 이러한 과정을 초기화라고도 부른다.
- +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, |=, =
7. 화살표 (->) 연산자
- Java 8 에 도입 된 람다 식의 구문으로 메소드를 하나의 식으로 표현한 것이다.
// 람다
(int a, int b) -> { return a > b ? a : b; }
// return 대신 expression 사용
(int a, int b) -> a > b ? a : b
// 매개변수 타입 생략
(a, b) -> a > b ? a : b
// 매개변수 1개일 경우 괄호 생ㅇ략
a -> a * a
// 본문 문장 1개일 경우 중괄호 생략
(String name, int i) -> System.out.println(name + "=" + i);
// switch문에서의 람다식 사용
char c = 'A';
switch (c){
case 'A' -> System.out.println("A");
case 'B' -> System.out.println("B");
case 'C' -> System.out.println("C");
default -> System.out.println("default");
}
8. 3항 연산자
- (조건식) ? (값 또는 연산식) : (값 또는 연산식)
int math = 90;
char grade = (math > 90) ? 'A' : 'B';
9. 연산자 우선 순위
- 같은 우선순위르 가진 연산자는 연산 방향이 왼쪽에서 오른쪽으로 수행된다.
- 단향 연산자, 부호 연산자, 대입 연산자는 오른쪽에서 왼쪽으로 수행된다.
10. Java 13. switch 연산자
- 기존의 switch 문에서 기능을 업그레이드한 switch 문이다.
- Java 13 에서 화살표 연산자의 사용, 콜론 ( : ) 제거, yield 리턴 기능이 추가되었다.
- Java 12 에서 break 로 리턴하는 기능이 추가 되었으나, 13 버전에서 yield 로 변경되어 break 문은 13부터는 사용할 수 없다.
// 화살표 연산자 사용, 콜론 ( : ) 제거
char c = 'A';
switch (c){
case 'A' -> System.out.println("A");
case 'B' -> System.out.println("B");
case 'C' -> System.out.println("C");
default -> System.out.println("default");
}
// expression 으로 사용 될 수 있다.
char c = 'A';
System.out.println(
switch (c){
case 'A' -> "A";
case 'B' -> "B";
case 'C' -> "C";
default -> "default";
});
// yield 로 결과 값을 리턴하여 값을 변수에 저장할 수 있다.
char c = 'A';
String str = switch (c){
case 'A' -> "A";
case 'B' -> "B";
case 'C' -> "C";
default -> {
String str1 = "default";
yield str1;
}
};
// yield 는 콜론을 사용하는 기존 switch 문에서도 사용이 가능하다.
// yield 가 마치 return 같은 기능을 한다고 보면 된다.
char c = 'A';
String str = switch (c){
case 'A':
yield "A";
case 'B':
yield "B";
case 'C':
yield "C";
default:
yield "default";
};
※ 출처
www.notion.so/3-4d1abf98a556427b9ad9e4aa6d08a0d5
www.notion.so/3-62eb78800e2f430b84eb60ae2f176811
※ 스터디
github.com/whiteship/live-study/issues/3
'Java' 카테고리의 다른 글
5. 클래스 (0) | 2020.12.19 |
---|---|
4. 제어문 (0) | 2020.12.04 |
2. 자바 데이터 타입, 변수 그리고 배열 (0) | 2020.11.25 |
1. JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가 (0) | 2020.11.11 |
BufferedReader , BufferedWriter (0) | 2020.08.28 |
링크
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 패스트캠퍼스 컴퓨터공학 완주반
- 이펙티브자바 아이템59
- 이펙티브자바 아이템60
- HTTP 완벽 가이드
- 모던자바스크립트
- 프로그래머스 SQL
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- BOJ
- js api
- http
- HTTP 완벽가이드
- JPA 연관관계 매핑
- 킹수빈닷컴
- js array
- GCP
- 드림코딩
- 김영한 http
- 이펙티브자바 스터디
- ㅇㄷㅇㅈ
- 김영한 JPA
- js promise
- 백기선 스터디
- JS 딥다이브
- REST API
- 백준
- dreamcoding
- 프로그래머스
- java
- Spring Security
- 이펙티브자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함