for문
반복문은 for문과 while문이 있다. for문은 반복횟수를 알고있을 때 사용하고 반대로 while문은 반복횟수를 알 수 없을 때 사용한다. 그중 for문을 알아보자.
for문은 ①초기화 ②조건식 ③수행될 문장 ④증감식 순으로 작성된다. 조건식에서 참이되면 ②,③,④ 순으로 반복되고 조건식에서 거짓이 되면 for문은 끝나게 된다. 이것을 코드문으로 작성하면 아래와 같다.
초기화
초기화는 처음에 한번만 수행된다. 또한 둘 이상의 변수를 사용할 수 있는데 두 변수의 타입이 같아야 한다.
for(int i=1;i<=10;i++) { ... } //변수 i의 값을 1로 초기화 한다.
for(int i=1,j=0;,i<=10;i++) { ... } //int타입의 변수 i와 j를 선언하고 초기화
조건식
조건식의 값이 참(true)이면 반복을 계속하고, 거짓(false)이면 반복을 중단하고 for문을 벗어난다. 조건식을 잘못 작성하면 블럭 {} 내의 문장이 한 번도 수행되지 않거나 영원히 반복되는 무한 반복에 빠지기 쉬우므로 주의해야 한다.
for(int i=1;i<=10;i++) { ... } // 'i<=10'가 참인 동안 블럭{}안의 문장들을 반복
증감식
증감식은 반복문을 제어하는 변수의 값을 증가 또는 감소시키는 식이다. 매 반복마다 변수의 값이 증감식에 의해서 점진적으로 변하다가 결국 조건식이 거짓이 되어 for문을 벗어나게 된다. 변수의 값을 1씩 증가시키는 연산자 '++'이 증감식에 주로 사용되지만, 다음과 같은 다양한 연산자들로 증감식을 작성할 수 있다.
for(int i=1;i<=10;i++) { ... } //1부터 10까지 1씩 증가
for(int i=10;i>=1;i++) { ... } //10부터 1까지 1씩 감소
for(int i=1;i<=10;i+=2) { ... } //1부터 10까지 2씩 증가
for(int i=1;i<=10;i*=3) { ... } //1부터 10까지 3배씩 증가
위의 표현식 중에 'i++'가 포함된 표현을 많이 쓴다.
중첩 for문
if문과 마찬가지로 for문도 중첩 for문을 사용할 수 있다. 중첩 for문은 for문안에 for문을 포함시키는 것을 말한다. 중첩 횟수에는 제한이 없으나 3회 이상 중첩 사용의 빈도가 낮다. 중첩 for문을 이해하는데에는 '별찍기'가 가장 좋다.
**********
**********
**********
**********
**********
우리는 이전에 배웠던 for문을 활용하여 위의 별찍기를 다음과 같이 표현할 수 있다.
우리는 위의 표현식에서 나타난 System.out.println("**********"); 의 문장을 아래와 같은 표현식으로 바꿀 수 있다.
변형된 식을 기존의 식에 대입하면 아래와 같은 중첩 for문이 완성된다.
그렇다면 위와 같은 별찍기를 하려면 어떻게 해야할까? 우선 별을 살펴보면,
열(j)의 값을 행(i)값이 따라가는 걸 알 수 있다. 그렇다면 앞서 활용한 중첩의 for문을 참조하여 아래와 같은 식으로 나타낼 수 있다.
for(int i=1;i<=5;i++) {
for(int j=1;j<=i;j++) {
System.out.print("*");
}
System.out.println();
}
앞서 살펴본 중첩 for문을 이용한다면 반복을 줄여주고 코드의 길이를 줄여준다. 즉 효율성이 있다.
출처:자바의 정석 기초편(저자:남궁성 출판:도우출판)
'java > 기본문법' 카테고리의 다른 글
[조건문과 반복문]break문, continue문 (0) | 2022.01.28 |
---|---|
[조건문과 반복문]while문, do-while문 (0) | 2022.01.28 |
[조건문과 반복문] 임의의 정수만들기 Math.random() (0) | 2022.01.25 |
[조건문과 반복문] switch (0) | 2022.01.25 |
[조건문과 반복문] if문 (0) | 2022.01.25 |