[JAVA] 자바 for문
■ for문을 알아보기에 앞서 다음과 같이 '*'을 하나 출력하는 예제를 살펴보도록 할게요.
당연히 '별'이 하나 출력이 됩니다. 그렇다면 별 10개를 만들고자 한다면 System.out.println("*"); 을 10개 복사해서 붙여넣기 하면 되겠죠. 백개...까지도 어떻게 해보겠습니다...ㅋㅋ 그런데 5만개의 별을 출력하라고 한다면...??;;시간이 걸리겠지만 가능은 하겠죠. 그런데 이런 경우에 for문을 활용하면 손쉽게 처리를 할수가 있습니다. 이처럼 for문은 유사한 문장을 일정한 숫자만큼 반복하게 하는 제어문입니다.
■ 그럼 먼저 위의 예제를 만들어보고 이론을 살펴보도록 하겠습니다.
형식은 위와 같습니다. '*' 열한개를 나란히 출력하도록 해본겁니다.
(원래는 열개만 할려고 했는데 조건식 부분을 저렇게 하는 바람에 하나가 더 찍혀 버렸네요.^^;)
우선 실행 순서부터 살펴보도록 하겠습니다.1번에 해당하는 [ int a=o;] 이라는 초기화 부분이 먼저 실행이 됩니다. 초기화 구문은 처음 한번만 실행이 됩니다. 그리고 나서 [a가 10보다 같거나 작나?]를 물어보는 2번에 해당하는 조건식 구문이 실행이 됩니다. 현재까지 a=0이니까 10보다 작습니다. 그러니까 조건식 부분이 true가 되겠죠. 그러면 내용부를 실행을 하게 됩니다. 내용부를 실행하면서 '*'을 하나 찍고나서....3번으로 이동을 해서 a를 하나 증가시킵니다. 그러면 a=1이 됩니다. 그리고 나서 다시 2번으로 갑니다. a=1이니까 10보다 작죠. 다시 true가 되어 내용부를 실행하고 별을 하나 더 출력하고 다시 3번으로 가서 1을 더하고 이번에는 a=2가 되고 다시 조건식으로 갑니다.
이런식으로 a를 계속 더해가다가[ a<=10 ]까지는 true니까 내용부가 실행이 됩니다. 그리고 나서 a=11이 되면 2번의 조건식은 false가 됩니다. 그러면 내용부를 실행하지 않고 블럭을 '{}'을 빠져 나가서 종료가 됩니다.
결론적으로 조건식 부분인 2번이 true이면 내용부를 실행하고, false이면 for문을 빠져 나가게 되는 것입니다. 10이라는 숫자 자리에 50,000을 입력하면 그 숫자에 도달할때까지 계속해서 별(*)을 찍어낼겁니다.
각 부분별로 조금씩 설명을 덧붙이겠습니다.
▣1번에 해당하는 부분은 초기화 부분 입니다.
처음에 시작할때 한번만 실행이 되고 다시는 실행이 되지 않습니다.
이부분은 위처럼 선언함과 동시에 초기화 시킬 수 있습니다.
또 작성하지 않고 공백으로 비워둘수도 있는데요. 그러기 위해서는
for문 전에[ int a=0;]이라는 필드를 정의해둬야 합니다. 이런식이 되겠죠.
다음으로는 만약에 for문전에[ int a;]라고 선언만 되어 있다면 이곳에서 (a=0 ; a<=10 ; a++) 이런식으로 초기화 해서 사용할 수도 있습니다.
▣ 2번의 논리형 조건식 구문
이부분도 공백으로 비워둘 수 있습니다. 공백으로 놔두면 이부분은 무조건 'true'되어서 무한루프를 돌게 됩니다. 위 예제에서 보듯이 true와 false의 값을 가질 수 있는 조건문이 올 수 있습니다.
▣ 증감식 부분
이부분은 a++처럼 증감 연산을 사용하여 값을 변화시키는 구문입니다. 구문내에 [y+=a++]처럼 수식이나 계산식을 넣을 수도 있습니다. 그리고 공백으로 놔둘수도 있는데, 공백으로 놔두면 아무것도 수행하지 않습니다.