연산자의 종류는 크게 3가지로 나뉠수 있습니다.
- 단항 연산자 : ++x;
- 이항 연산자 : x+y;
- 삼항 연산자 : (sum > 90) ? "A" : "B";
이항 연산자와 삼항 연산자는 누구나 쉽게 이해 하고 계실겁니다.
물론 단항 연산자도 쉽게 이해하시는 분도 계시겠지요
저는 단항연산자중 증감연산자에서 ++x 와 x++의 차이점을 쉽게 이해 할 수 없었습니다. 사실 쉽게 이해 하고 있는줄 알았습니다. 책을 읽고 단번에 이해가 되는듯 하였으나, 예제를 보니 그렇지 않았습니다...
아래 정의를 읽어보시고 예제를 한번 보겠습니다.
증감 연산자(++, --)
변수의 값을 1증가(++), 1감소(--)시키는 연산자. boolean타입을 제외한 모든 기본 타입의 피연산자를 사용 할 수 있다.
연산식에서 증감 연산자만 있는 경우 증감 연산자가 변수 앞 또는 뒤 어디든 위치해도 상관없다.
하지만, 다른 연산자와 함께 사용하는 연산시에서는 연사자의 위치에 따라 연산결과가 다르게 나온다.
증감 연산자가 변수 앞에 있으면 우선 변수를 1증감 후 다른 연산자와 계산.
증감 연산자가 변수 뒤에 있으면 다른연산자를 먼저 처리한 후 변수를 1증감 한다.
Ex)
int x = 1;
int y = 1;
int result1 = ++x + 10; //12
int result2 = y++ + 10; //11
x의 값이 1증가되어 2가 된 후 10을 더하여 12가 되고,
y의 값은 1과 10을 더한 후 그 후에 y에 1이 증가되어 결과값은 11이 된다.
위에 내용을 보면 쉽게 이해 되는듯 하나 아래 예제를 보고 갸우뚱 해졌습니다.
public static void main(String[] args) {
int x = 10;
int y = 10;
int z;
System.out.println("------------------------------");
x++; //11
++x; //12
System.out.println("x = "+x); //12
System.out.println("------------------------------");
y--; //9
--y; //8
System.out.println("y = "+y); //8
System.out.println("------------------------------");
z = x++;
System.out.println("z = "+z); //12
System.out.println("x = "+x); //13
System.out.println("------------------------------");
z = ++x;
System.out.println("z = "+z); //14
System.out.println("x = "+x); //14
System.out.println("------------------------------");
z = ++x + y++; //15 + 8
System.out.println("z = "+z); //23
System.out.println("x = "+x); //15
System.out.println("y = "+y); //9
}
Line 7 ~ Line 13은 너무 쉽게 이해가 됐습니다.
그러나.... Line 18 ~ Line 19 를 보고 순간 멍~ 한참을 반복해서 보니 이해가 됐습니다...
Line 17 z = x++;
에서 x는 Line 8에서 적용된 12입니다.
이때 증감연산자(++)가 변수(x) 뒤에 있기때문에 다른 연산자를 먼저 계산해야 하기 때문에 z = x
연산을 먼저 해줍니다.
이후 x++
증감연산을 하기 때문에 결과적으로 z = 12
이고 x = 13
이 되겠습니다.
그 이후 아래로 소스를 읽다보면 자연스럽게 정답을 맞출수 있게 됩니다.
기초적이면서도 헷갈릴수 있는 단항 연산자에 대해 알아보았습니다.
저와 같은 개린이 분들에게 도움이 되었으면 좋겠습니다....ㅎㅎ
'Java' 카테고리의 다른 글
JAVA 설치 과정 (0) | 2021.02.23 |
---|