728x90
산술 연산자
- +, -, *, /, % 사칙 연산자가 있다.
- 숫자 피연산자인 byte, short, char, int, long, float, double를 연산하며 결과도 숫자로 반환한다.
- 연산 결과의 타입은 피연산자의 타입에 따라 달라진다.
- int 타입 보다 크기가 작은 타입(byte, short, char)은 int로 프로모션 되어 연산된다.
비트 연산자
- ~, &, |, ^, <<, >>, >>> 연산자가 있다.
- 비트 연산자는 정수 혹은 부울(boolean) 피연산자를 연산한다.
- 비트 단위로 연산한다.
- 정수 혹은 참, 거짓 값을 반환한다.
관계 연산자
- <, <=, >, >=, ==, != 연산자가 있다.
- 피연산자를 비교하기 위한 연산자이다.
- 참 또는 거짓 값을 반환한다.
논리 연산자
- !, &&, || 연산자가 있다.
- 부울 피연산자를 연산한다.
- 참 또는 거짓 값을 반환한다.
instanceof
- 객체의 타입을 확인하는데 사용한다.
- 속성은 이항연산자이고 형변환 가능여부를 판단한다.
- 주로 상속 관계에서 부모객체인지 자식객체인지 확인하는데 사용한다.
- assignment(=) operator
public class InstanceofTest {
public static void main(String[] args) {
A a = new A();
B b = new B();
//a는 자기 자신을 가르키므로 형변환 가능
System.out.println(a instanceof A); //true
//a는 B의 부모이므로 형변환 불가능
System.out.println(a instanceof B); //false
//b는 자기 자신을 가르키므로 형변환 가능
System.out.println(b instanceof B); //true
//b는 A의 자식이므로 A로 형변환 가능
System.out.println(b instanceof A); //true
}
}
class A {
}
class B extends A {
}
화살표(->) 연산자
- 람다 표현식 (lambda expression) 이다.
- 메소드를 하나의 식으로 표현한 것이다.
- 자바에서 람다 표현식이란 익명 클래스와 같다.
- (매개변수목록) -> {함수 몸체}
- 자바 8부터는 화살표 함수를 사용하여 함수형 프로그래밍을 할 수 있게 되었다.
//람다 표현식
(a, b) ->
a < b
? a
: b;
//익명 클래스
new Object() {
int min(int x, int y) {
return x < y ? x : y;
}
}
주의사항
- 매개변수의 타입을 추론할 수 있는 경우에는 타입을 생략할 수 있다.
- 매개변수가 하나인 경우에는 괄호를 생략할 수 있다.
- 함수의 몸체가 하나의 명령문만으로 이루어진 경우에는 중괄호를 생략할 수 있다. (세미콜론은 붙이지 않는다)
- 함수의 몸체가 하나의 return 문으로만 이루어진 경우에는 중괄호를 생략할 수 없다.
- return 문 대신 표현식을 사용할 수 있으며, 반환값은 표현식의 결과 값이 된다. (이때 세미콜론은 붙이지 않는다)
3항 연산자
- if else 같은 조건문을 사용하지 않아도 되기에 적재적소에 사용하면 코드를 더 깔끔하게 만들 수 있다.
- 유일하게 세 개의 항으로 이루어져있는 연산자이다.
- 조건항 ? 항1 : 항2의 구조이다.
- 3항 연산자를 중첩해서 사용 가능하다.
const outLine =
intLine
? true
? '참'
: '거짓'
: false;
const price =
(5 < 4)
? 50
: 40;
연산자 우선 순위
우선순위 | 연산자 | 내용 |
1 | (), [], . | 괄호, 대괄호, 점 |
2 | !, ~, ++, -- | 부정, 증감 연산자 |
3 | *, /, % | 곱셈, 나눗셈 연산자 |
4 | +, - | 덧셈, 뺄셈 연산자 |
5 | <<, >>, >>> | 비트단위의 쉬프트 연산자 |
6 | <, <=, >, >= | 관계 연산자 |
7 | ==, != | 비교 연산자 |
8 | & | 비트단위의 논리연산자 |
9 | ^ | |
10 | | | |
11 | && | 논리곱 연산자 |
12 | || | 논리합 연산자 |
13 | ? : | 조건연산자(3항 연산자) |
14 | =, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, ~= | 대입, 할당 연산자 |
(optional) Java 13. switch 연산자
- 기존의 switch 구문에 expression을 추가할 수 있다.
- 기존의 switch문의 case: 대신 case ->가 사용 가능해졌다.
- break문 대신 yield 구문을 사용한다. 다중의 구문을 적용하거나, throw 구문을 사용할 때, expression이 아닌 경우에는 중괄호로 감싸야한다.
switch(expression){
case expression -> expression;
...
default -> expression
};
switch(expression){
case expression:
expression;
yield expression;
...
default:
expression;
yield expression;
};
References.
'공부 > 스터디할래? with.백기선' 카테고리의 다른 글
2주차 과제: 자바 데이터 타입, 변수 그리고 배열 (0) | 2020.11.15 |
---|---|
1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가? (0) | 2020.11.14 |
댓글