안녕하세요, 여행벌입니다.

오늘은 자바 연산자 중 단항 연산자들에 대해서 다뤄보겠습니다.


단항 연산자


 단항 연산자는 피연산자가 하나인 연산자로 이항 연산자에 비해 그 수가 적습니다.


부호 연산자 : +, -


 +, - 는 이항 연산자로 사용되면 덧셈과 뺄셈에 사용되지만, 단항 연산자로 수학에서와 동일한 의미를 갖습니다. 이때, 자바는 기본적으로 정수형 연산을 int 형으로 진행하고 그 결과도 int 형으로 반환하고, 실수형 연산을 double형으로 진행하고 그 결과도 double 형으로 반환하므로 부호 연산자를 사용할 때도 이 점을 주의해야 합니다.


예시 1)


package Hello;

public class HelloWorld {
	public static void main(String args[]) {
		int num = 5;
		System.out.println(-num);
	}
}
-5

 위의 코드는 부호 연산자 - 를 이용해 num 의 부호를 바꿔서 출력했습니다.

package Hello;

public class HelloWorld {
	public static void main(String args[]) {
		short num = 5;
		short num2 = -num;
	}
}

 위의 코드를 실행하면 num2 에는 -5가 저장될까요? 정답은 -num 은 int 형이지만 num2 는 short 형이므로 에러가 발생합니다.


증가 및 감소 연산자 : ++,  --


연산자

연산자의 기능

결합 방향

++ (Prefix)

피연산자에 저장된 값을 1 증가시킵니다.

val = ++n;

-- (Prefix)

피연산자에 저장된 값을 1 감소시킵니다.

val = --n;

++ (Postfix)

피연산자에 저장된 값을 1 증가시킵니다.

val = n++;

-- (Postfix)

피연산자에 저장된 값을 1 감소시킵니다.

val = n--;

 증가 및 감소 연산자 ++, -- 는 피연산자의 앞부분에 붙이냐, 뒷부분에 붙이냐에 따라 작동하는 방식이 조금 다릅니다. 기본적으로 값이 하나 증가 및 감소하는 것은 동일하나 반영되는 시점에 차이가 있습니다. Prefix 방식은 연산으로 인한 값의 증가 및 감소가 연산이 진행된 문장에서 발생하고, Postfix 방법은 그다음 문장으로 넘어가야 반영이 됩니다.


예시 2)


package Hello;

public class HelloWorld {
	public static void main(String args[]) {
		int num1 = 5, num2 = 5;
		System.out.println("num1++ : " + num1++ + ' ' + "++num2 : " + ++num2);
		System.out.println("num1-- : " + num1-- + ' ' + "--num2 : " + --num2);
	}
}
num1++ : 5 ++num2 : 6
num1-- : 6 --num2 : 5

 결국 모든 코드를 수행하고 나서 num1, num2 에 모두 5가 저장되지만 적용되는 시점에 따라 출력되는 값이 다른 것을 확인할 수 있습니다.


 

+ Recent posts