증감 연산자에는 전위 증감연산자와 후위 증감연산자가 있다.
for문이나, 메소드에서 리턴 값을 줄 때 특히나 많이 사용하게 되는 증감 연산자는 어떤 변수에 앞이나 뒤에 ++ , -- 를 붙이는 것을 말한다.
처음 코딩을 접했을 때 증감 연산자의 개념에 혼란을 겪었을 때가 있었는데, 오늘 일기를 통해서 더 이상 헷갈리지 않았으면 한다.
우선, 제일 쉬운 변수 x에 5라는 값을 대입하고 전위증감 연산자를 출력값에 주도록 해보자 .
당연히도 전위 증감연산자 이기 때문에 프로그램에 6으로 출력되었다. 그렇다면 후위 증감연산자는 어떨까 ?
이번 프로그램에선 5의 값이 출력되었다. ++의 위치만 바꿔주었을 뿐인데 둘의 결과는 차이를 보이고 있다.
증감연산자의 위치가 어디냐에 따라 변수의 값이 달라졌다. 그렇다면 후위 증감연산자는 언제 값을 더해줄까 ?
처음 x++의 값을 출력하였을 때는 5를 출력하였지만 다음 x의 출력 값은 6을 출력하였다.
후위증감연산자는 전위증감연산자와 다르게 변수의 값을 먼저 사용하고 변수를 1 증가 시킨다.
간단한 곱셈 문제를 하나 예로 들어보자 .
첫 줄에서 x의 값은 5이고, y의 값은 x의 후위증감연산자를 주었다.
result는 두 변수의 곱일 때, x와 y, result의 값은 어떻게 될까?
필자를 포함한 대부분의 코딩 초보들은 당연히 y라는 변수는 5의 값을 담고 있지만 result의 값에서 1이 더해진 6이 될테니
x = 5 , y = 6, result = 30 이라고 생각할 것이다. 하지만 결과를 보자.
y의 값이 6이 되어 5 * 6 = 30 이 된 것이 아닌, x의 값이 하나 더해져, 6 * 5 가 되어 30 이 된 모습을 볼 수 있다.
우선 x의 값은 y의 증감연산자에 의해서 1이 더해졌고, y는 후위증감연산자로 인해 더해지기 전의 x값인 5가 대입되어 30이라는 값을 출력
한 것이다. 즉 y = x + 1, 이 아니라 y = x++ 이기 때문에 x 라는 변수의 값이 1 더해졌고 y는 x라는 변수에 들어있는 값에 증가되기 전 변수
를 담은 셈이다.
그렇다면 전위 증감연산자로 계산하면 어떻게 될까 ?
y는 5의 전위증감연산자이니 6이라는 값이 담길 것이고,
그렇다면 x 변수의 값은 무엇이 담길까 ? 5 or 6?
무언가 y에서 증감연산자 값이 한 번 처리되어 6이 될테니 x 변수에는 5가 담길 것만 같다.
지금이야 말로 5 * 6 = 30 의 식이 성립되는 것일까 ?
예측과는 달리 y의 값은 6이 , x의 값에도 6이 담겨 36이라는 결과가 출력되었다.
위에서 언급했듯, y에서 x의 전위 증감연산자가 한 번 처리 되었으니 x의 값은 변함이 없을 것이라는 예측은 보기좋게 틀렸다.
y에도 x의 전위증감연산자가 처리된 값 6과, x의 값인 5에도 증감연산자처리가 되어 6이 담긴 것이다.
증감연산자는 반복문 뿐 아니라 메소드 등 코드에서 다양하게 쓰이는 Operator (연산자) 반댓말로는 Operland(피연산자)가 있음..
이니 헷갈리지 말자 !
'JAVA의 정석' 카테고리의 다른 글
String 배열과 String 클래스의 주요 메서드 (0) | 2023.08.06 |
---|---|
배열의 생성,초기화 / 배열의 활용 (0) | 2023.08.05 |
형변환 응용 (대문자를 소문자로 소문자를 대문자로 )(1) (0) | 2023.07.24 |
타입간의 변환방법 (0) | 2023.07.23 |
숫자를 문자열로 문자열을 숫자로 (0) | 2023.07.22 |