코딩을 하다보면, 흔히 만날 수 있는 ++
, --
녀석들에 대해 간단하게 정리하고자 한다. 반복문 for
에서 맨날 만나는 i++
처럼 말이다.
++x;
x++;
--y;
y--;
얘네들은 단항 연산자라고 피연산자가 1개인 항으로 이루어진 상태다. 피연산자 앞뒤로 붙고 앞에 붙냐, 뒤에 붙냐에 따라 결과가 다르다.
피연산자 앞에 붙는 경우
피연산자 뒤에 붙는 경우
int x = 3;
int y = 3;
System.out.println("--------------");
System.out.println(++x); // +1 적용된 상태로 x 출력
System.out.println(y++); // y를 출력한 뒤, +1 적용
System.out.println("--------------");
System.out.println(y);
결과값을 보면, x
앞에 증감 연산자가 붙으니 바로 적용되어 출력되는 것을 알 수 있다. 반면에, y
뒤에 증감 연산자가 붙어 증가하지 않았다. 그런 다음 y
를 다시 출력해보니 +1이 되어있다.
쉽게 말해, (++,--)피연산자
는 해당 실행문이 실행되기 전에 이미 적용되어 있고, 피연산자(++, --)
이 녀석은 해당 실행문이 실행된 후에 적용된다. 실행되기 전에 증감해줄 지, 후에 증감해줄 지에 따라 위치가 다르다.
for(int i = 0; i < ; i++) {
}
얘도 {}
실행문이 1번 돌아간 후, i
가 자동적으로 증가한다.
이게 전부다.
삼항연산자는 아래와 같이 이루어져 있다.
조건식(피연산자1)
?
값 or 연산식(피연산자2):
값 or 연산식(피연산자3)
?
를 기준으로 조건식(피연산자1)과 값 or 연산식(피연산자2, 3)
을 나눈다. 그 다음 :
을 기준으로 피연산자2, 3
을 나눠준다.
:
앞에 있는 피연산자(2)는 참일 때, 선택되고 뒤에 있는 피연산자(3)은 거짓일 때 선택된다. 코드로 쉽게 이해해보자!
int score = 80;
char grade = (score > 95) ? true : false; // 조건식이 참이면 true 선택, 거짓이면 false 선택!
score가 95보다 크면 true, 작다면 false. 이러한 방식이다. grade를 제대로 넣고 적어보면,
int score = 80;
char grade = (score > 95) ? 'A' : 'B';
여기서는 score
가 score > 95
라는 조건식에 부합하지 못 하기 때문에 B
가 선택된다.
조건식이 붙었으니, if문처럼 사용해도 된다. 그렇지만, 모든 if문을 대체할 수 없다. 간단한 if문을 대체하는 용도로 사용된다. 위의 삼항연산자를 if문으로 작성해보겠다!
int score = 80;
char grade;
if (score > 95) {
grade = 'A';
} else {
grade = 'B';
}
모든 if문을 대체할 수 없지만, 잘 사용한다면 자신의 코드를 간결하게 나타낼 수 있다. (다른 여러 연산자도 포함!!!)