본문 바로가기
Java

6강 연산자

by 보라코끼리 2021. 7. 31.
728x90
  • [인프런]자바 프로그래밍 입문강좌 6강 연산자 정리입니다.
  • 프로그램이 실행될 때 컴퓨터(CPU)에게 계산(연산) 업무를 시키기 위한 방법에 대해서 학습합니다.
  • 컴퓨터의 구조는 크게 CPU, 메모리, 하드디스크로 구성된다.
  • 여기서 CPU가 연산 업무를 담당한다.
  • 메모리는 하드디스크에 있는 데이터를 CPU로 이동시키는 역할을 한다.

6.1 피연산자 개수에 의한 연산자 구분

  • 피연산자 개수에 따라서 단항, 이항 그리고 삼항 연산자로 구분할 수 있다.
    • 단항 연산자
      • 피연산자가 하나 존재
      • +x, -x, !x
        • +, -, ! : 연산자
        • x : 피연산자
    • 이항 연산자
      • 피연산자가 두개 존재
      • x=y, x<y, x!=y
        • =, <, != : 연산자
        • x, y : 피연산자
    • 삼항 연산자
      • 피연산자가 세개 존재
      • 조건식:true?false
        • :, ? : 연산자
        • 조건식, true, false : 피연산자

 

6.2 대입 연산자

  • 대입 연산자는 오른쪽의 결과를 왼쪽에 대입(할당)한다.
    • '='는 수학에서 '오른쪽 값과 왼쪽 값이 같다'라는 의미 이지만, 프로그램에서는 '오른쪽 값을 왼쪽에 대입'하는 의미로 쓰인다.
    • 프로그램에서 '오른쪽과 왼쪽이 같다'라는 의미의 연산자는 '=='이다.
    int x = 10;
    int y = 20;

    // 대입 연산자
    System.out.println("x = " + x);
    System.out.println("y = " + y);

    x = y;
    System.out.println("x = " + x);
    System.out.println("y = " + y);

    // 결과
    //        x = 10
    //        y = 20
    //        x = 20
    //        y = 20
  • int x = 10;
    • x에 10을 대입(할당)한다.
  • x = y;
    • y의 값을 x에 대입(할당)한다.

 

6.3 산술연산자

  • 피연산자를 이용해서 +, -, *, /, % 등을 수행한다.
    x = 10; y = 20;
    // 산술 연산자
    System.out.println("x + y = " + (x+y)); // + : 덧셈
    System.out.println("x - y = " + (x-y)); // - : 뺄셈
    System.out.println("x * y = " + (x*y)); // * : 곱셈
    System.out.println("x / y = " + (x/y)); // / : 나눗셈
    System.out.println("x % y = " + (x%y)); // % : 나머지

    // 결과
    //        x + y = 30
    //        x - y = -10
    //        x * y = 200
    //        x / y = 0
    //        x % y = 10
  • int 형과 int 형의 산술 연산의 값은 int 형
  • 소수점까지 구하고싶다면 double형으로 형변환이 필요하다.

 

6.4 복합 대입연산자

  • 산술 연산자와 대입 연산자를 결합한 연산자이다.
    // 복합대입 연산자
    x = 10;
    System.out.println("x += 10 : " + (x += 10)); // += : 더하고 대입
    x = 10;
    System.out.println("x -= 10 : " + (x -= 10)); // -= : 빼고 대입
    x = 10;
    System.out.println("x *= 10 : " + (x *= 10)); // *= : 곱하고 대입
    x = 10;
    System.out.println("x /= 10 : " + (x /= 10)); // /= : 나누고 대입
    x = 10;
    System.out.println("x %= 10 : " + (x %= 10)); // %= : 나머지를 대입

    // 결과
    //        x += 10 : 20
    //        x -= 10 : 0
    //        x *= 10 : 100
    //        x /= 10 : 1
    //        x %= 10 : 0
  • x += 10;
  • => x = x + 10;
    • x에 10을 더한 값을 x에 대입

 

6.5 관계 연산자

  • 두 개의 피연산자를 비교해서 참/거짓의 결론을 도출한다.
    // 관계 연산자
    x = 10; y = 20;
    System.out.println("x > y : " + (x > y)); // x>y : x가 y보다 크면 참
    System.out.println("x < y : " + (x < y)); // x<y : x가 y보다 작으면 참
    System.out.println("x >= y : " + (x >= y)); // x>=y : x가 y보다 크거나 같으면 참
    System.out.println("x <= y : " + (x <= y)); // x<=y : x가 y보다 작거나 같으면 참
    System.out.println("x == y : " + (x == y)); // x==y : x와 y가 같으면 참
    System.out.println("x != y : " + (x != y)); // x!=y : x와 y가 같지 않으면 참

    // 결과
    //    x > y : false
    //    x < y : true
    //    x >= y : false
    //    x <= y : true
    //    x == y : false
    //    x != y : true

 

6.6 증감 연산자

  • 1만큼 증가 하거나 감소를 수행한다.
    // 증감 연산자
    // 1. 전위 연산자
    x = 10;
    System.out.println("++x : " + (++x)); // ++x : x값 먼저 1 증가 후 출력
    x = 10;
    System.out.println("--x : " + (--x)); // --x : x값 먼저 1 감소 후 출력
    // 2. 후위 연산자
    x = 10;
    System.out.println("x++ : " + (x++)); // x++ : x값 먼저 출력 후 1 증가한 값 메모리 저장
    System.out.println("x : " + x);
    x = 10;
    System.out.println("x-- : " + (x--)); // x-- : x값 먼저 출력 후 1 감소한 값 메모리 저장
    System.out.println("x : " + x);

    // 결과
    //    ++x : 11
    //    --x : 9
    //    x++ : 10
    //    x : 11
    //    x-- : 10
    //    x : 9
  • ++x
  • => x = x + 1;

 

6.7 논리 연산자

  • 피연산자의 논리곱(AND), 논리합(OR), 논리부정(NOT)을 수행한다.
    // 논리 연산자
    boolean b1 = false;
    boolean b2 = true;
    System.out.println("b1 && b2 : " + (b1 && b2)); // a&&b(논리곱) : a와 b가 모두 참이면 참
    System.out.println("b1 || b2 : " + (b1 || b2)); // a||b(논리합) : a와 b 중 하나라도 참이면 참
    System.out.println("!b1 : " + !b1); // !a(논리부정) : a의 상태를 부정
    System.out.println("!b2 : " + !b2);

    // 결과
    //    b1 && b2 : false
    //    b1 || b2 : true
    //    !b1 : true
    //    !b2 : false

 

6.8 조건(삼항) 연산자

  • 삼항 연산자로 두개의 피연산자 연산 결과에 따라서 나머지 피연산자가 결정된다.
  • 조건식 ? 식1 : 식2 
    • 조건식이 참이면 식1이 실행되고, 조건식이 거짓이면 식2가 실행된다.
    // 조건(삼항)연산자
    x = 10; y = 20;
    int result = 0;
    result = (x > y) ? 100 : 200; // false
    System.out.println("result: " + result);

    result = (x < y) ? 100 : 200; // true
    System.out.println("result: " + result);

    result = (x == y) ? 100 : 200; // false
    System.out.println("result: " + result);

    // 결과
    //    result: 200
    //    result: 100
    //    result: 200

 

6.9 비트 연산자

  • 데이터를 비트(bit) 단위로 환산하여 연산을 수행하며, 다른 연산자보다 연산 속도가 향상된다.
    // 비트 연산자
    x = 2;
    y = 3;
    System.out.println("x & y : " + (x & y)); // a&b(AND 연산) : a와 b가 모두 1이면 1 
    System.out.println("x | y : " + (x | y)); // a|b(OR 연산) : a와 b 중 하나라도 1이면 1
    System.out.println("x ^ y : " + (x ^ y)); // a^b(XOR 연산) : a와 b가 같지 않으면 1

    // 결과
    //    x & y : 2
    //    x | y : 3
    //    x ^ y : 1

  • 속도 차이가 그렇게 크지는 않기 때문에 자바에서는 잘 사용되지는 않는다.
728x90

'Java' 카테고리의 다른 글

7강 배열  (0) 2021.07.31
5강 특수 문자와 서식 문자  (0) 2021.07.30
4강 기본자료형  (0) 2021.07.30
3강 변수  (0) 2021.07.30
2강 Java 프로그램의 실행 구조  (0) 2021.07.28