[Java] 반복문_아쉬운 점
미니프로젝트때 같은 팀이었던 오빠가 전공자고 잘 하셔서 이거 아냐고 예전팀 단톡에 물어보셨는데 알지 못했다,,, 흑흑
평소에 쓰던거랑 달라서 바로 멘붕이 와버렸지만 그래도 다시 알던 개념들을 되짚어가며 내 허점을 파악할 수 있어서 정말 좋았다!! 듣고보니 다 아는건데 왜 그랬을까 정말로 너무너무너무 아쉽지만 압박면접 때 나오더라도 이제는 자신있게 대답할 수 있다! 흑흑
아래 식의 결과값은 어떻게 나올까?
for(int i=0, j =0; i < 10 ;i++,++j) {
System.out.println(i);
System.out.println(j);
}
1. 일단 실행이 되는걸까?
정답은 Yes!
1) int i 와 j 가 동시에 있어도 가능하다!
2) j는 조건식이 없지만 i가 조건식이 있기때문에 무한루프에 빠지지 않는다!
2. i 와 j 값은 어떻게 될까?
i는 후위연산자고, j는 전위연산자니까 i = 0 , j = 1이 출력되는걸까?
for문의 증감식에서 후위, 전위연산자는 차이가 없게 출력이 된다.
그 이유가 무엇인지는 for문 작동순서를 보면 빠르게 이해할 수 있다.
초기식 --> 조건식 ---> 본문 실행 ---> 증감식
----------> 조건식 ---> 본문 실행 ---> 증감식 * 반복
1) 먼저 초기식에서 i=0, j=0
2) 조건식이 i<10이니까 만족하므로 본문으로 넘어간다
3) 본문 출력
System.out.println(i); // 0
System.out.println(j); // 0
4) 증감식에서 아래와 같이 증가된다.
i = 1
j = 1
5) 그리고 다시 조건식으로 돌아간다. 그리고 여러번 반복후에
6) 본문실행
System.out.println(i); // 9
System.out.println(j); // 9 가 출력된후
7) 증감식 으로 가서
i = 10
j = 10 이 되고
8) 조건식 에서 i<10이기 때문에 for문을 빠져나온다.
따라서 for문을 빠져나온 후 i, j의 최종값은 i=10, j=10이 된다.
이렇게 보니 참 간단한데 놀라서 논리적으로 생각을 못했다. 그리고 확신도 없었다.
앞으로 이런 개념들이 많을텐데 꾸준히 배워서 실력이 늘면 좋겠다.