본문 바로가기
공부/스터디할래? with.백기선

3주차 과제: 연산자

by Moonsc 2020. 11. 28.
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;
    }
}

 

주의사항

  1. 매개변수의 타입을 추론할 수 있는 경우에는 타입을 생략할 수 있다.
  2. 매개변수가 하나인 경우에는 괄호를 생략할 수 있다.
  3. 함수의 몸체가 하나의 명령문만으로 이루어진 경우에는 중괄호를 생략할 수 있다. (세미콜론은 붙이지 않는다)
  4. 함수의 몸체가 하나의 return 문으로만 이루어진 경우에는 중괄호를 생략할 수 없다.
  5. 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.

댓글