Java

<Java> Operator( 연산자 )

98kg 2023. 8. 24. 00:22

이번 포스팅은 java의 연산자에 관한 포스팅입니다..



연산자 (Operator) 정의

 

  • 연산자란 프로그램에서 데이터를 처리하여 결과를 산출하는 것을 연산(operation)이라 칭한다.
  • 연산에 사용되는 표시나 기호를 연산자(operator)라고 한다.
  • 연산되는 데이터는 피연산자(operand)라고 한다.ex) 산술연산(  +,  -,  *,  /,  % ) 등
 

 


우선 처음으로는 산술 연산자에 대해 알아보겠습니다.

 

산술 연산자 설명
+ 왼쪽의 피연산자에 오른쪽의 피연산자를 더함
- 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺌.
* 왼쪽의 피연산자에 오른쪽의 피연산자를 곱함.
/ 왼쪽의 피연산자에 오른쪽의 피연산자를 곱함
% 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환함.
예제


		int a = 20;
        int b = 10;
        int c;
        c = a + b;

        System.out.println(c); // 20

        c = a - b;
        System.out.println(c); // 10

        c= a * b;
        System.out.println(c); // 200

        c = a / b;
        System.out.println(c); // 2

        c = a % b;
        System.out.println(c); // 0
  • / (나눗셈) 과 % (나머지) 가 헷갈리니 주의해서 사용하자.

 


증감 연산자

 


  • 피연산자의 앞 또는 뒤에 붙어 값을 1씩 증가시키거나 감소시킨다
  • 뒤에 붙으면 후행 연산자로 다음 번에 실행 될 때 1 씩 증가 된다.
  • 앞에 붙으면 선행 연산자로 찍히는 당시 바로 + 1 이된 값이 출력된다.

 

증감 연산자 설명
++(postfix), --(postfix) 후행 연산자로 다음 번에 실행 될 때 1 씩 증가 된다.
 (prefix)++ ,.(prefix) -- 선행 연산자로 찍히는 당시 바로 + 1 이된 값이 출력된다.

ex)

  // 증감 연산  ++, --
        int val;
        val = 10;
        System.out.println(val); // 10
        System.out.println(++val); // 11 여기서 바로 1 증가 후 출력
        System.out.println(val); // 11

        val = 10;
        System.out.println(val); // 10
        System.out.println(val++); //우선 여기선 10 출력 후 1 증가 저장만
        System.out.println(val); //11 , 1 저장된 걸 출력

        val = 10;
        System.out.println(val); // 10
        System.out.println(--val); // 9
        System.out.println(val); // 9

        val = 10 ;
        System.out.println(val); // 10
        System.out.println(val--); // 10
        System.out.println(val); // 9

은행 대기번호 표로 가볍게 예시를 보여주겠습니다.

// 은행 대기번호 표
        int waiting =0;
        System.out.println("대기 인원 : "+ waiting++ ); // 대기인원 0명
        System.out.println("대기 인원 : "+ waiting++ );// 대기인원 1명
        System.out.println("대기 인원 : "+ waiting++ ); // 대기인원 2명
        System.out.println("총 대기 인원 : "+ waiting ); //  총 대기인원 3명

 


복합 대입 연산자


증감 연산자 설명
+= 두 항의 값을 더해서 왼쪽 항에 대입
-= 왼쪽 항에서 오른쪽 항을 빼서 그 값을 왼쪽 항에 대입
*= 두 항의 값을 곱해서 왼쪽 항에 대입
/= 왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입
%= 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입

ex)

 // 복합 대입 연산자
        int num = 10;
        num += 2;  // num = num +2 와 같다.
        System.out.println(num);
        


        num -= 2; // num = num - 2 와 같다.
        System.out.println(num);


        num *= 2; //num = num * 2 와 같다.
        System.out.println(num);

        num /= 2; //num = num / 2 와 같다.
        System.out.println(num);

        num %= 2; //num = num % 2 와 같다.
        System.out.println(num);

비교 연산자


비교 연산자 설명
> 완쪽 값이 오른쪽보다 크다
>= 완쪽 값이 오른쪽보다 크거나 같다
< 완쪽 값이 오른쪽보다작다
<= 완쪽 값이 오른쪽보다 작거나 같다
== 완쪽 값이 오른쪽과 같다
!= 완쪽 값이 오른쪽과 다르다

 

ex)

 // 비교 연산자
        System.out.println(5 > 3); // 5는 3보다 크다( 참이면 true ,거짓이면 false 출력 )
        System.out.println(5 >= 3); //5가 3보다 크거나 같다 확인.(ture)
        System.out.println(5 >= 5); //5가 5보다 크거나 같다 확인. (true)
        System.out.println(5 >= 7); //5가 7보다 크거나 같다 확인. (false)


        System.out.println(5 < 3); // 5는 3 다 작다( false )
        System.out.println(5 <= 3); // 5는 3보다 작거나 같다 (false)


        System.out.println(5 == 5); //왼쪽 값과 오른 쪽값이 똑같은지 확인 (true)
        System.out.println(5 == 3); //왼쪽 값과 오른 쪽값이 똑같은지 확인 (false)


        System.out.println(5 != 5); //왼쪽 값과 오른 쪽값이 같지 않은지 확인 (false)
        System.out.println(5 != 3); //왼쪽 값과 오른 쪽값이 같지 않은지 확인 (true)

 


논리 연산자


논리 연산자 설명
||   OR (둘 중하나라도 맞으면  true)
&& AND (둘 다 일치해야 true 하나라도 틀리면  false)

 

ex)

 // 논리 연산자
        boolean 김치찌게 = false;
        boolean 계란말이 = false;
        boolean 제육볶음 = true;

        System.out.println(김치찌게 ||계란말이 || 제육볶음); // ||는 or을 표현함 (하나라도 true 이면 true 출력
        System.out.println(김치찌게 && 계란말이 && 제육볶음); //  &&는 and 를 표현함 (하나라도 false 이면 모두  false)
        // and 연산
        System.out.println((5 > 3) && (3 > 1));// 두 식이 모두 true 이어야 true
        System.out.println((5 > 3) && (3 < 1)); // false
        // or 연산
        System.out.println((5 > 3) || (3 > 1)); // 둘 다 만족하면 true
        System.out.println((5 > 3) || (3 < 1)); // 둘 중 하나만 만족하면 true
        System.out.println((5 < 3) || (3 < 1)); // 둘 다 만족 하지 않으면 false


//        System.out.println(1 < 3 < 5); 불가능
        System.out.println(1 < 3 && 3 < 5); //가능 괄호 없어도 연산 가능 but, 가독성 때문에 괄호 치는 거 습관화하기

        //  논리 부정 연산자
        System.out.println(!true); // false
        System.out.println(!false); // true
        System.out.println(!(5 == 5)); // true 의 반대인 false 반환
        System.out.println(!(5 == 3)); // false 의 반대인 true 반환

 


삼항 연산자


조건문인 if 문을 사용하여 코딩을 할 경우 코드 라인이 의미 없이 길어지는 경우들이 종종 생겨 

코드가 의미없이 복잡해지는 경우가 있습니다 

이럴 때 삼항 연산자를 이용하면 코드의 라인수 확 줄어듭니다

우선 식을 보여드리겠습니다.

 

 int max = (x > y) ? x : y;

위에 식을 설명하자면 아래와 같습니다.

 


식  :  결과 = (조건) ? (참의 경우 결과값) : (거짓의 경우 결과값)


ex)

 // 삼항 연산자
        // 식 : 결과 = (조건) ? (참의 경우 결과값) : (거짓의 경우 결과값)
        int x =5;
        int y =3;
        int max = (x > y) ? x : y;
        System.out.println(max); // 5

        int min = (x < y) ? x : y;
        System.out.println(min); // 3



        boolean b = (x == y) ? true : false;
        System.out.println(b);

        String s = (x != y ) ? "달라요" : "같아요";
        System.out.println(s);

 


연산자의 우선순위(operator precedence)

   연산자의 우선순위는 수식 내에 여러 연산자가 함께 등장할 때, 어느 연산자가 먼저 처리될 것인가를 결정합니다


자바 연산자의 우선순위표

 

우선순위도 연산자
 높음

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
    V    
   
낮음
++(postfix), --(postfix)
+(양수부호) , - (음수부호), (prefix)++ ,.(prefix) -- 
형변환 ( type casting)
* , / , %
+(덧셈) , - (뺼셈)
<< , >>, >>> (비트단위 쉬프트 연산자)
<> , <= , >= ,  instanceof (관계 연산자)
&(비트 AND) 
^ (비트  XOR)
&&( 논리 AND)
|| (논리 OR)
?: (조건)
=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= ( 대입연산자, 할당 연산자)

 

 


마지막으로 간단한  Quiz를 내보며 이번 포스팅을 끝마치겠습니다.

 

QUIZ (출처: 인프런 나도코딩)

 

어린이 키에 따른 놀이 기구 탑승 가능 여부를 확인하는 프로그램을 작성하시오.

조건 )

  • 키가 120 cm 이상인 경우에만 탑승 가능
  • 삼항 연산자 이용
  • 실행결과 

실행결과

<< Answer  >>

더보기
public class _Quiz_02 {
    public static void main(String[] args) {
        int tall = 115;
        String s = (tall >= 120) ? "키가 " + tall +"cm 이므로 탑승 가능합니다"
                : "키가 " + tall +"cm 이므로 탑승 불가능합니다";
        System.out.println(s);

         tall = 121;
        String d = (tall >= 120) ? "키가 " + tall +"cm 이므로 탑승 가능합니다"
                : "키가 " + tall +"cm 이므로 탑승 불가능합니다";
        System.out.println(d);
    }
}