ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java | Operator 연산자
    JAVA/JAVA 2020. 1. 16. 21:34

    Operator 연산자

    연산을 실행하는 기호

    ※ 피연산자 : 연산의 대상이 되는 값, 항이라고도 함


    산술연산자

    피연산자에 대한 산술적 계산을 실행할 때 사용하는 연산자

    단항 산술 연산자

    단항 산술 연산자 설명
    + 양수임을 표시하는 연산자, 양수 표기시 생략
    - 음수임을 표시하는 연산자

    이항 산술 연산자

    이항 산술 연산자 설명
    + 두 항의 값을 더함
    - 앞의 항에서 뒤의 항을 뺌
    * 두 항의 값을 곱함
    / 앞의 항을 뒤의 항으로 나눔
    % 앞의 항을 뒤의 항으로 나눈 나머지를 구함

     


    증감연산자

    특정 변수의 값을 1만큼 증가시키거나 감소시키는 역할을 하는 연산자

    주로 제어문에 많이 사용됨

    단항 산술 연산자 설명
    ++ 피연산자의 값을 1만큼 증가시킴
    -- 피연산자의 값을 1만큼 감소시킴
    • 전위연산자 : ++(--)변수, 변수값을 사용하기 전에 +(-)1 계산이 먼저 이루어짐
    • 후위연산자 : 변수++(--), 변수값을 먼저 사용하고 나서 나중에 +(-)1 계산이 이루어짐

    사용례 1

    public class Op1 {
        public static void main(String[] args) {        
            int a = 4;
            int b = a++;
            int c = ++a;
            System.out.println("a값: "+a+", b값: "+b+", c값: "+c);
            // a값: 6, b값: 4, c값: 6
            /*
            ① a = 4
            ② b에 a(4)가 대입된 후 a = 4 + 1 계산이 이루어지기
            때문에 b의 값은 4가 출력
            ③ a = 5인 상태에서 a = 5 + 1 계산이 먼저 이루어지기 때문에
            a = 6이 되고, c에 a(6)이 대입돼서 변수 a, c값으로 6이 출력
            */
        }
    }

    ※ 대입연산자 오른쪽의 산술연산자가 먼저 실행되고 그 값이 변수에 저장됨

    사용례 2

    public class Op2 {
        public static void main(String[] args) {
            int i = 8;
    
            System.out.println("i: "+i); // i: 8
            System.out.println("++i: "+(++i)); //++i: 9
            System.out.println("i++: "+(i++)); //i++: 9
            System.out.println("i: "+i); // i: 10        
    
             System.out.println("--i: "+(--i)); // --i: 9
            System.out.println("i--: "+(i--)); //i--: 9
            System.out.println("i: "+i); // i: 8
        }
    }

    사용례 3 - JavaScript

    JavaScript에서 증감연산자를 사용하는 것과 동일함

    var i = 8;
    
    console.log("i: "+i); // i: 8
    console.log("i++: "+(i++)); // i: 8
    console.log("++i: "+(++i)); // i: 10
    console.log("i: "+i); // i: 10

    ※ 웹브라우저에 표현하고 싶으면 console.log()를 document.write()로 바꾸면 됨


    관계연산자

    관계연산자 설명
    > 왼쪽 값이 오른쪽 값보다 크다면 참
    >= 왼쪽 값이 오른쪽 값 이상이라면 참
    < 왼쪽 값이 오른쪽 값보다 작다면 참
    <= 왼쪽 값이 오른쪽 값 이하라면 참
    != 왼쪽과 오른쪽 값이 같지 않다면 참
    == 비교연산자
    변수에 들어있는 값(내용)이 같은 지 확인할 때 사용
    참조형(class형) : 저장 위치 비교시 사용

     


    논리연산자

    논리연산자 설명
    & AND, 연결된 두 항의 논리값이 모두 참이여야 참을 반환
    && AND, 조건평가
    | OR, 연결된 두 항의 논리값 중 어느 하나라도 참이면 참을 반환
    || OR, 조건평가
    ^ XOR, 연결된 두 항의 진리값이 같으면 거짓, 다르면 참 반환
    ! NOT, 뒤에 오는 항의 진리값을 반대로 바꿔서 반환

    모두평가 / 조건평가

    모두평가 조건평가
    &, | &&, ||
    첫 항의 결과와 상관없이
    무조건 두 항 모두 계산하는 방식
    첫 항의 결과에 따라서
    두 번째항의 계산을 생략할 수도 있는 방식

    ※ 요즘에는 크게 구분하지 않고 사용한다고 함

    사용례_조건평가

    public class Op3 {
        public static void main(String[] args) {
            boolean b = 2>3 && 5<7;
            /* 첫 항의 값이 F이면 &&연산자에 의해 두 번째 항의 값과 관련없이
            무조건 F를 반환하기 때문에 두 번째 항 계산 생략 */
        }
    }

    사용례_대입연산자 & 논리연산자

    public class Op3 {
        public static void main(String[] args) {
            int t1 = 3, t2 = 5, t3 = 7;
            boolean b1, b2, b3;
            boolean b4 = true;
    
             // >, < 관계연산자
            System.out.println("(t1>t2)?: " + (t1 > t2)); // false
            System.out.println("(t2<t3)?: " + (t2 < t3)); // true
    
             // &&, || 조건평가
            b1 = (t1 > t2) && (t2 < t3);
            System.out.println("(t1>t2) && (t2<t3): " + b1);
             // (t1>t2) && (t2<t3): false
            b2 = (t1 > t2) || (t2 < t3);
            System.out.println("(t1>t2) || (t2<t3): " + b2);
             // (t1>t2) || (t2<t3): true
    
             // !(NOT)
             b3 = !b4;
            System.out.println("!b4: " + b3);
             // !b4: false
    
            // &, | 모두평가
             b1 = (t1 > t2) & (t2 < t3);
            System.out.println("(t1>t2) & (t2<t3): " + b1);
             // (t1>t2) & (t2<t3): false
            b2 = (t1 > t2) | (t2 < t3);
            System.out.println("(t1>t2) | (t2<t3): " + b2);
             // (t1>t2) | (t2<t3): true
    
             // ^
             b2 = (t1 > t2) ^ (t2 < t3);
            System.out.println("(t1>t2) ^ (t2<t3): " + b2);
             // (t1>t2) ^ (t2<t3): true, 두 항의 진리값이 다르기 때문에 true
        }
    }

    대입연산자

    = : 왼쪽 변수에 오른쪽 항의 값을 대입하는 연산자

    복합대입연산자

    연산과 대입을 동시에 실행하는 연산자

    연산자 하나로 두 개의 연산을 하기 때문에 실행 속도가 더 빠름

    연산자 기능
    += 두 항의 값을 더해서 왼쪽 항에 대입
    -= 왼쪽 항에서 오른쪽 항을 빼서 그 값을 왼쪽 항에 대입
    *= 두 항의 값을 곱해서 왼쪽 항에 대입
    /= 왼쪽 항을 오른쪽 항으로 나눈 뒤 몫을 왼쪽 항에 대입
    %= 왼쪽 항을 오른쪽 항으로 나눈 뒤 나머지를 왼쪽 항에 대입

    ※ +=, -=의 경우 1보다 큰 수일 때 주로 사용
    → 증감연산자 ++, --가 있기 때문에

    사용례

    public class Op4 {
        public static void main(String[] args) {
            int a = 5, b = 7;
    
            // +=
            a += b;
            System.out.println("a: " + a); // a: 12
    
            // -=
            a -= b;
            System.out.println("a: " + a); // a: 5
    
            // *=
            a *= b;
            System.out.println("a: " + a); // a: 35
    
            // /=
            a /= b;
            System.out.println("a: " + a); // a: 5
    
            // %=
            a %= b;
            System.out.println("a: " + a); // a: 5
        }
    }

    ※ /(나누기) 연산의 결과 값에 소수점이 있다면 버려짐
    → 기본연산자가 정수 자료형인 int이기 때문에


    삼항연산자_조건연산자

    (조건식) ? 결과1 : 결과2;

    조건식의 진리값이 참이면 결과1을 선택하고
    진리값이 거짓이면 결과2를 선택

    사용례

    public class Op4 {
        public static void main(String[] args) {
            int x = 10, y = -10;
    
            int absX = (x >= 0) ? x : -x;
            int absY = (y >= 0) ? y : -y;
            System.out.println("absX: " + absX); // absX : 10
            System.out.println("absY: " + absY); // absY : 10
        }
    }

    ※ 삼항연산자를 활용해서 변수에 값을 저장할 수 있음


    Java에서 사용하는 연산자들에 대해 알아보았습니다.

    증감연산자와 관계, 논리연산자는 제어문에서도 많이 사용되기 때문에 익혀두면 보다 수월하게

    제어문을 작성할 수 있을 것입니다.

    'JAVA > JAVA' 카테고리의 다른 글

    Java | 제어문_조건문, 선택문  (0) 2020.01.16
    Java | Casting 형변환  (0) 2020.01.16
    Java | Data Type 자료형  (0) 2020.01.15
    Java | Variable 변수, Scope, Constant 상수  (0) 2020.01.15
    Java | 기본 문법  (0) 2020.01.15

    댓글

Designed by Tistory.