Java/정리

[Java] 반복문_아쉬운 점

콧등치기국수 2021. 6. 26. 00:55

미니프로젝트때 같은 팀이었던 오빠가 전공자고 잘 하셔서 이거 아냐고 예전팀 단톡에 물어보셨는데 알지 못했다,,, 흑흑

평소에 쓰던거랑 달라서 바로 멘붕이 와버렸지만 그래도 다시 알던 개념들을 되짚어가며 내 허점을 파악할 수 있어서 정말 좋았다!! 듣고보니 다 아는건데 왜 그랬을까 정말로 너무너무너무 아쉽지만 압박면접 때 나오더라도 이제는 자신있게 대답할 수 있다! 흑흑

 

아래 식의 결과값은 어떻게 나올까?
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이 된다.

 

 

 

이렇게 보니 참 간단한데 놀라서 논리적으로 생각을 못했다. 그리고 확신도 없었다.

앞으로 이런 개념들이 많을텐데 꾸준히 배워서 실력이 늘면 좋겠다.