JAVA LV 2-1

단항 연산자

Posted by Gihoon on March 13, 2023

증감 연산자 ++ –

증감 연산자는 피연산자에 저장된 값을 1 증가 또는 감소 시킨다.
증감 연산자의 피연산자로 정수와 실수가 모두 가능하지만, 상수는 값을 변경할 수 없으므로 불가능하다.
피연산자의 값을 변경하는 것은 오직 대입연산자와 증감연산자만 가능하다.

  • 증가 연산자 ++ : 피연산자의 값을 1 증가시킨다.
  • 감소 연산자 – : 피연산자의 값을 1 감소시킨다,

일반적으로 단항 연산자는 피연산자의 왼쪽에 위치하지만 증감 연산자는 양쪽 모두 가능하다. 피연산자의 왼쪽에 위치하면 ‘전위형(prefix)’ 오른쪽에 위치하면 ‘후위형(postpix)’이라고 한다.
**증감 연산자가 수식이나 메서드 호출에 포함된 경우 전위형일 떄와 후위형일 떄의 결과가 다르다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        int i=5, j=0;

        j = i++;
        System.out.println("j=i++; 실행 후, i=" + i +", j="+ j);

        i=5;       
        j=0;

        j = ++i;
        System.out.println("j=++i; 실행 후, i=" + i +", j="+ j);

실행 결과
j=i++; 실행 후, i=6, j=5
j=++i; 실행 후, i=6, j=6
  • 전위형 : 값이 참조되기 전에 증가 시킨다. ( j = ++i; )
  • 후위형 : 값이 참조된 후에 증가 시킨다. ( j = i++; )
    하지만 독립적인 하나의 문장으로 쓰인 경우에는 전위형과 후위형의 차이는 없다.그러나 다른 수식에 포함되거나 메서드의 매개변수로 사용된 경우 전위형과 후위형의 결과는 다르다. 다음 예제를 보자.다음은 메서드 호출에 증감연산자가 사용된 예이다.
1
2
3
4
5
6
7
8
9
        int i=5, j=5;

        System.out.println(i++);    
        System.out.println(++j);
        System.out.println("i = " + i + ", j = " +j);
실행 결과  
5  
6  
i = 6, j = 6

i는 값이 증가되기 전에 참조되므로 println()에게 i에 저장된 값 5를 넘겨주고 나서 i의 값이 증가학 ㅣ때문에 5가 출력되고, j의 경우 j에 저장된 값을 증가 시킨후에 println()에게 넘겨주므로 6이 출력된다. 결과적으로 i,j 모두 6이 된다.

부호 연산자 + -

부호 연산자 ‘-‘는 피연산자의 부호를 반대로 변경한 결과를 반환한다. 부호 연산자 +는 거의 사용할 일이 없다.
부호 연산자는 boolean, char 형을 제외한 기본형에만 사용할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
    int i = -10;
    i = +i;
    System.out.println(i);

    i=-10;
    i = -i;
    System.out.println(i);


실행결과  
-10  
10