자바(Java) 강의

4. 자바 배열과 반복문 (5) while

삐멜 2019. 3. 24. 04:22

이번 포스트에선 자바에서 제공하는 반복문 중 하나인 while문에 대해서 알아보도록 한다.

예상 독자

목표

  • while문
  • break

while문

while문은 for문 처럼 자바가 제공하는 반복문 중 하나이다. 문법은 아주 간단하다.

while ( 논리식 ) {

}

괄호 안의 논리식이 true인 동안 while은 내부 블록을 계속해서 반복한다.

예를 들어 아래를 보자.

public class Main {
public static void main(String[] args) {
while (true) {
System.out.println("이것은 무한루프.");
}
}
}

괄호 안이 true이므로 while은 해당 블록을 계속 반복 할 것이다. 이렇게 영원히 반복하는 반복문을 무한루프라고 부른다. 다른 예를 보자.

public class Main {
public static void main(String[] args) {
char[] numbers = {'a', 'b', 'c', 'd', 'e', 'f'};
int i = 0;
while(i < numbers.length) {
System.out.println(numbers[i]);
i++;
}
}
} 실행 결과: a b c d e f

위의 코드는 i가 배열의 길이보다 작은동안 반복한다, 그리고 반복 하나가 끝나기 전에 i를 1 증가한다. 따라서 i는 언젠가 numbers배열의 길이보다 커질 것이도 while문은 종료 될 것이다. 위와 똑같은 기능을 하는 코드를 for문으로 작성 할 수 있다.

public class Main {
public static void main(String[] args) {
char[] numbers = {'a', 'b', 'c', 'd', 'e', 'f'};
for(int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
}
}

위 처럼 for문으로 작성 할 수 있는 코드는 while문으로도 작성 할 수 있다. 또 while문으로 작성 할 수 있는 코드는 for 문으로도 작성 할 수 있다. 상황에 따라서 더 적합한 것을 쓰면 된다. for문은 보통 i처럼 인덱스 값에 의존하는 경우 많이 쓰고 while은 그렇지 않은 경우 많이 쓴다.

break

반복을 하던 도중 반복문을 중단하고 나가고 싶다면 어떻게 하겠는가? 그럴 떄 바로 break를 써서 나갈 수 있다.

public class Main {
public static void main(String[] args) {
int i = 0;
while(true) {
if(i == 10) {
break;
}
System.out.println("i = " + i);
i++;
}

System.out.println("끝.");
}
} 실행 결과: i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9 끝.

위처럼 break를 이용하면 반복문 중간에 빠져나올 수 있다. while뿐만 아니라 for문에도 해당된다.

public class Main {
public static void main(String[] args) {
char[] numbers = {'a', 'b', 'c', 'd', 'e', 'f'};
for(int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
if(numbers[i] == 'd') {
break;
}
}

System.out.println("끝.");
}
}
실행 결과: a b c d 끝.

이 외에도 do-while또 goto 문으로 반복 할 수 있지만 거의 쓰이지 않으므로 생략하겠다. 거의 쓰이지 않기도 하고 권장되지 않는 문법이기도 하다. 다음 포스트에서는 함수에 대해 알아보도록 하겠다.

다음 포스트:5. 자바 메서드