[Java] 단항 연산자

Bam·2024년 2월 21일
0

Java

목록 보기
8/98
post-thumbnail

단항 연산자

가장 먼저 다룰 연산자는 높은 연산 우선순위를 가지고 있는 단항 연산자입니다. 단항 연산자는 피연산자가 하나인 연산자로 오른쪽에서 왼쪽으로 연산되는 특징을 갖고있습니다.


증감 연산자 ++, --

증감 연산자는 피연산자의 값을 1 증가 또는 감소시키는 연산자입니다. 단항 연산자는 모두 피연산자의 왼쪽에 사용하지만, 증감 연산자는 피연산자의 왼쪽이나 오른쪽에 올 수 있습니다. boolean을 제외한 기본형에서 사용 가능합니다.

위치에 따라 다시 전위, 후위로 나뉘는에 이에 대해서는 잠시 후에 다루도록 하겠습니다.

  • ++: 피연산자의 값을 1 증가.
  • --: 피연산자의 값을 1 감소.
public class Operator {
    public static void main(String[] args) {
        int num = 1;

        num++;
        System.out.println(num);

        num = 1; //다시 num을 1로 초기화

        ++num;
        System.out.println(num);
    }
}

증감 연산자의 전위형, 후위형

증감 연산자는 피연산자의 왼쪽에 사용되면 전위형, 오른쪽에 사용되면 후위형이라고 부릅니다. 두 형태간의 차이는 무엇일까요?

다음 코드를 봅시다. 같은 증감 연산자인데 위치에 따라 결과가 다르게 나옵니다.

public class Operator {
    public static void main(String[] args) {
        int num = 1;

        System.out.println(++num); //전위형

        num = 1;
        
        System.out.println(num++); //후위형
    }
}

이렇게 나온 이유는 전위형과 후위형의 차이 때문입니다.

전위형은 피연산자의 값을 참조하기 전에 1을 증가시킵니다. 반대로 후위형은 피연산자의 값을 참조하고 1을 증가시키게 됩니다.

그렇기 때문에 전위형을 쓴 코드에서는 println() 메소드가 num이 1이라는 것을 참조하기 전에 num에 1을 증가시켜서 2가 된 것이고, 후위형을 사용한 코드에서는 println()가 num을 참조해서 실행(로그에 출력)한 뒤에 1을 증가시켰기 때문에 1이라는 숫자가 출력된 것 입니다.

간단히 이야기하자면 후위형은 해당 명령줄이 다 실행한 후에 1을 증가시킨다~라고 생각해도 좋습니다.
다음 코드를 보시면 해당 줄 명령이 수행된 후에 1이 증가되었음을 알 수 있습니다.

public class Operator {
    public static void main(String[] args) {
        int num = 1;
       
        System.out.println(num++);
        System.out.println(num);
    }
}

또한 지금처럼 다른 명령이 있는 경우에는 다른 결과를 보이지만, 증감 연산자와 피연산자가 단독으로 있는 명령에서는 아무런 영향도 없습니다.

public class Operator {
    public static void main(String[] args) {
        int num = 1;

        num++;
        System.out.println(num);
      
        num = 1;

        ++num;
        System.out.println(num);
    }
}


부호 연산자 +, -

부호 연산자는 피연산자의 부호를 변경하는데 사용됩니다. 숫자가 아닌 boolean, char형에는 사용할 수 없습니다.

더 간단하게 표현하자면 +는 피연산자에 1을 곱하고, -는 피연산자에 -1을 곱한다고 생각하시면 됩니다.

int num = 1;

System.out.println(-num);


비트 반전 연산자 ~

비트 반전 연산자 ~정수형char형에만 사용할 수 있습니다. 해당 데이터를 2진수로 변환했을 때 비트 반전(01로, 10으로 반전)을 수행합니다.


부정 연산자 !

부정 연산자 !boolean형에만 사용할 수 있습니다. !truefalse로, falsetrue로 변경합니다.

boolean flag = true;

System.out.println(!flag);

0개의 댓글