ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [live-study] 3주차 :: 연산자
    JAVA/라이브 스터디 | whiteship 2020. 12. 28. 01:30

    https://youtu.be/HLnMuEZpDwU

    참고도서 : Java의 정석, Java in a Nutshell

     

    0. 연산자

    연산자란?
    • 연산을 수행하는 기호를 의미한다.
    연산자와 피연산자
    • 연산자(Operator) : 연산을 수행하는 기호 (+, - , * , / 등)
    • 피연산자(Operand) : 연산하는 대상 (변수, 상수, 리터럴 등)
    연산자의 종류
    • 단항 연산자 : 피연산자가 하나 뿐인 연산자
      • 부호 연산자 (+, -)
      • 증감 연산자 (++, --)
      • 논리 부정 연산자 (!)
      • 비트 반전 연산자 (~)
    • 이항 연산자 : 피연산자가 두 개인 연산자
      • 산술 연산자 (+, -, *, / , %)
      • 문자열 연결 연산자 (+)
      • 대입 연산자 (=, += ,-= ...)
      • 비교 연산자 (<, <= , > , >= , ...)
      • 논리 연산자 (&&, ||, &, | , ....)
      • 비트 논리 연산자 (&, |, ^)
      • 비트 이동 연산자 (<< , >> , >>> )

     

     

    1. 산술 연산자

    산술 연산자 (Arithmetic Operator)
    • 산술 연산자는 사칙 연산자와 나머지 연산자가 있다. 
    • 곱셈(*), 나눗셈(/), 나머지(%) 연산자가 덧셈(+), 뺄셈(-) 연산자보다 우선순위가 높다.
    덧셈 ( + )
    • 일반적인 덧셈

    • 타입이 다른 두 피연산자간의 덧셈

    • 문자열 덧셈

     

    뺄셈 ( - )
    • 일반적인 뺄셈

    곱셈 ( * )
    • 일반적인 곱셈

    • 오버플로우

    나눗셈 ( / )
    • 일반적인 나눗셈

    • 나눗셈은 나누는 수로 0을 사용할 수가 없다. 0으로 나누게 되면 컴파일은 정상적으로 되지만, 실행 시 오류 (ArithmeticException)이 발생하게 된다.

     

    나머지 ( % )
    • 나머지 연산자는 말 그대로 나누기를 한 후 남은 나머지 값을 결과로 반환하는 연산자 이다. 
    • 나눗셈과 마찬가지로 나누는 수로 0을 사용할 수 없다. 하지만 음수는 허용한다. 단, 부호는 무시되므로 절댓값으로 나눈 결과와 같다.


    2. 비트 연산자

    비트 연산자
    • 피연산자를 비트단위로 논리 연산하는 것을 말한다. 실수 등의 피연산자에서는 사용할 수 없다.
    • 만약, 피연산자 둘 중 하나가 long인 경우에는 결과 값이 long타입으로 반환된다. 이 경우를 제외하고는 int형으로 결과값이 반환된다.
    • low-level 연산자로서, 모던 자바에서는 low-level 작업을 제외하고는 자주 사용되지는 않는다.
    OR 연산자 ( | )
    • 두 개의 정수 피연산자에서 둘 중 한쪽 비트 값이 1이면 결과값 1을 반환하고, 둘 다 0인 경우에만 0을 반환한다. 

    AND 연산자 ( & )
    • 두 개의 정수 피연산자에서 양 쪽 모두 비트 값이 1인 경우에만 결과값 1을 반환하고, 나머지의 경우에는 0을 반환한다.

    XOR 연산자 ( ^ )
    • 두 개의 정수 피연산자에서 서로의 값이 다를 때만 결과값 1을 반환하고, 같은 경우에는 0을 반환한다.

    전환 연산자 ( ~ )
    • 비트 0인 경우에는 결과값이 1로, 비트가 1인 경우에는 결과값이 0으로 반환된다.

    쉬프트 연산자 ( <<  , 왼쪽)
    • x << n : 10진수 x의 2진수를 왼쪽으로 n만큼 이동한다라는 뜻이다. 결과값은 x * 2^n 이다. 

    쉬프트 연산자 ( >> , 오른쪽)
    • x >> n : 10진수 x의 2진수를 오른쪽으로 n만큼 이동한다라는 뜻이다. 결과값은 x/2^n 이다. 

     


    3. 관계 연산자

    관계 연산자 (Relational Operator)
    • 두 피연산자를 비교하여 관계를 파악할 수 있는 연산자이다. 연산의 결과는 true 또는 false이다.
    대소비교 연산자
    • < ,  > ,  <= , >=

    등가비교 연산자
    • ==,  !=

    문자열의 비교
    • .equals(), .equalsIgnoreCase() 

     

    4. 논리 연산자

    논리 연산자 (Logical Operator)
    • 논리 연산자는 두개 이상의 조건을 연결하는데 사용된다.
    &&
    • 피연산자 두 개 다 'true' 이어야 true가 결과값으로 나온다.

    ||
    • 피연산자 둘 중에 하나만 'true' 이어도 true를 결과값으로 얻을 수 있다.

    논리 연산자 (Logical Operator)
    • 논리 연산자



    5. instanceof

    instanceof 연산자
    • instanceof 연산자는 왼쪽 피연산자가 오른쪽 피연산자의 타입이거나 형변환이 가능한지를 true 또는 false로 변환하는 연산자이다.
    • 참조타입, 객체에만 사용이 가능하고 기본형 타입과 변수에는 사용할 수가 없다.
    • instanceof 연산자는 왼쪽 피연산자로는  참조변수가 필요하고, 오른쪽 피연산자로는 타입명이 들어간다.
    • 만약 왼쪽 피연선자가 null 인 경우에는 언제나 false를 반환한다.


    6. assignment(=) operator

    대입 연산자 ( = )
    • 대입 연산자는 변수에 값 또는 수식의 연산 결과를 저장하는데 사용된다.
    • 대입 연산자는 연산자들 중에 우선순위가 가장 낮으므로, 식에서 가장 늦게 수행된다.
    • 대입 연산자(=)를 기준으로 왼쪽은 반드시 변수처럼 값을 변경할 수 있는 것이어야 하고, 오른쪽은 변수, 식, 상수 등 가능하다. 
    복합 대입 연산자
    • 대입 연산자는 다른 연산자들과 결합하여 사용할 수 있다.



    7. 화살표(->) 연산자

    화살표 연산자 
    • 자바 8에서부터 지원되는 람다 표현식(Lambda expression)이다.
    • (매개변수 목록) -> {함수몸체}


    8. 3항 연산자

    3항 연산자
    • 조건식, 식1, 식2 세 개의 피연산자를 필요로 한다.
    • 조건식이 true이면 ? 바로 뒤의 식이 결과값을 반환되고, false이면 : 뒤의 식이 결과값으로 반환된다.

    9. 연산자 우선 순위

    연산자 우선 순위
    • 연산자가 둘 이상인 경우, 연산자는 우선순위에 의해서 연산순서가 결정된다. 
    • 산술 > 비교 > 논리 > 대입 순
    • 단항 > 이항 > 삼항 순

    출처 : http://blog.daum.net/gunsu0j/31

     

    10. (optional) Java 13. switch 연산자

    Java 13 switch  연산자
    • case를 쉼표로 구분하여 한줄로 쓸 수 있게 되었다. 그리고 람다 표현식과 결합하여 표현도 가능하다.
    • 기존방식은 아래와 같이 표현하였다.

    기존 방식

    • 13부터 지원되는 방식에서는 위와는 다르게 한 줄로 작성하고 쉼표로 구분지을 수 있다. 또한 람다식 표현도 함께 사용할 수 있다.

    13부터 지원되는 새로운 방식

    • 일종의 return 키워드인 yield 키워드도 사용할 수 있다.

     

     

    참고자료

    댓글

Programming Diary