연산자

박상윤·2022년 8월 13일

📌 연산자(Operator)란

프로그램에서 계산을 하기 위해 수행되는 기호들의 조합
수행되는 항에 따라서, 연산 기능에 따라서 종류가 나뉜다.

  • 항에 따른 분류 : 단항 / 이항 /삼항
  • 기능에 따른 분류 : 산술 / 논리 / 비트 / 관계(비교) / 기타

📌 산술 연산자

산술(수학)적인 연산에 적용되는 연산자

  • 피연산자가 정수형인 경우, 나누는 수가 0이면 Error 발생한다.

연산에 따라 결과값에서 값 손실이 발생 할 수 있다.

  • 손실을 최소화 하기 위해 결과값을 두 피연사자의 Type 중 표현 범위가 더 큰 Type에 일치시킨다.

코드 예시

package chapter3;

public class ArithmeticOperation {
    public static void main(String[] args){
        int a = 100;
        int b = 40;

        System.out.printf("%d + %d = %d\n",a,b,a+b);
        System.out.printf("%d - %d = %d\n",a,b,a-b);
        System.out.printf("%d * %d = %d\n",a,b,a*b);
        System.out.printf("%d / %d = %d\n",a,b,a/b);
        System.out.printf("%d / %f = %f\n",a,(float)b,a/(float)b); // 자동 형변환 : a/(float)b -> float

        int remainValue = 10 % 3;
        System.out.println(remainValue);
        System.out.println((char)('c'+1));
    }
}

출력결과

📌 비트 연산자

비트 단위로 논리연산을 수행하는 연산자

비트연산

  • &(AND), |(OR), ^(XOR)

비트이동

  • <<(비트 왼쪽으로 이동), >>(비트 오른쪽으로 이동)

비트전환

  • 0비트는 1비트로, 1비트는 0으로 전환 (-)

코드예시

package chapter3;

public class BitOperation {
    public static void main(String[] args){
        int x = 4;
        int n = 2;

        // 비트 연산 &,|,^
        System.out.println(x&n);
        System.out.println(x|n);
        System.out.println(x^n);

        // 비트 전환
        System.out.println(-n);

        // 비트 이동 연산자
        System.out.println("x >> n = " +(x>>n)); // 나누기 (x/2^n)
        System.out.println("x << n = " +(x<<n)); // 곱하기 (x*2^n)
        System.out.println("x >>> n = "+(x>>>n)); // 부호 없는 비트 연산자 : 모든 비트 오른쪽으로 지정한 수 만큼 밀어내고 나머지는 0으로 채운다.
    }
}

출력결과

📌 관계(비교) 연산자

두 연산자를 비교하는데 사용되는 연산자
주로 조건문, 반복문에서 많이 사용한다.

  • 대소 비교 연산자 : <,>,<=,>=
  • 등가 비교 연산자 : ==, !=

코드예시

package chapter3;

public class RelationshipOperation {
    public static void main(String[] args){
        int x = 10;
        int y = 20;

        System.out.println(x<y);
        System.out.println(x<=y);
        System.out.println(x>y);
        System.out.println(x>=y);
        System.out.println(x==y);
        System.out.println(x!=y);

        float f = 0.1f;
        double d = 0.1;
        System.out.println(f == d);
    }
}

출력결과

📌 논리 연산자

둘 이상의 조건을 이용하여 하나의 식으로 만드는 연산자
&&,||,!

  • &&(AND결합) : 피연산자가 모두 true이면 true
  • ||(OR결합) : 피연산자가 하나라도 true이면 true
  • !(부정) : 피연산자의 결과를 반대로

코드예시

package chapter3;

public class LogicOperation {
    public static void main(String[] args) {
        int x = 10;
        int y = 20;

        System.out.println((x>y)||(x==20));
        System.out.println((x>y)&&(x==20));
        System.out.println(!(x>y));
    }
}**텍스트**

출력결과

📌 기타 연산자

📍 조건 연산자

특정 조건에 부합하는지 검사 후, 참 혹은 거짓에 해당하는 값을 반환
삼항 연산자에서 많이 사용

📍 Instanceof

참조 변수의 타입이 같은지 비교

📍 대입 연산자

값을 저장하는 대입 연산자
연산 후 저장하는 복합 연산자

코드 예시

package chapter3;

public class OthersOperation {
    public static void main(String[] args) {
        char c = 'a';
        String str = "Test";
        int num = 120;

        System.out.println(c>'b' ? 1 : -1);
        //System.out.println(c instanceof String); //error
        System.out.println(str instanceof Object); //true

        num+=30;
        System.out.println("num = " + num);
        num-=30;
        System.out.println("num = " + num);
        num/=30;
        System.out.println("num = " + num);
        num%=30;
        System.out.println("num = " + num);
    }
}

결과값

📌 항의 수에 따른 연산자

📍 단항 연산자

증감 연산자(++,--) / 논리 부정 연산자(!) / 비트 전환 연산자(-)

📍 이항 연산자

위에 나온 대부분의 연산자

📍 삼항 연산자

(조건문) ? (참인 경우 값):(거짓인 경우 값)

코드 예시

package chapter3;

public class TermCountOperation {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 20;
        
        // 단항 연산자
        System.out.println(++num1); // 전치 연산자 : 연산하고 결과값 변수 반영 후 출력 | 후치 연산자 : 변수값 먼저 출력하고 연산
            
        // 이항 연산자
        System.out.println(num1 + num2);
        System.out.println(num1 <= num2);
    
        boolean flag = (num1 == num2) ? true : false;
        System.out.println(flag);
    }
}

출력 결과

📌 연산자 우선순위

profile
BE 공부 블로그입니다

0개의 댓글