순차적으로 구조화된 프로그램 명령문은 한 번만 실행될 수 있습니다. 동일한 작업을 여러 번 수행하려면 루프 구조를 사용해야 합니다.
Java에는 세 가지 주요 루프 구조가 있습니다.
while 루프
do…while 루프
for 루프
Java5에서는 주로 배열에 대해 향상된 for 루프가 도입되었습니다.
while은 가장 기본적인 루프이며 구조는 다음과 같습니다.
while(부울 표현식) {
//루프 내용}
부울 표현식이 true인 한 루프 본문은 계속 실행됩니다.
공개 클래스 테스트 {
공개 정적 무효 메인(문자열 인수[]) {
정수 x = 10;
동안( x < 20 ) {
System.out.print("x의 값 : " + x );
x++;
System.out.print("n");
}
}
}
위 예제의 컴파일 및 실행 결과는 다음과 같습니다.
x의 값: 10
x의 값 : 11
x의 값 : 12
x의 값 : 13
x의 값 : 14
x의 값: 15
x의 값: 16
x의 값 : 17
x의 값 : 18
x의 값 : 19
while 문의 경우 조건이 만족되지 않으면 루프에 진입할 수 없습니다. 하지만 때로는 조건이 충족되지 않더라도 적어도 한 번은 실행해야 하는 경우가 있습니다.
do...while 루프는 do...while 루프가 적어도 한 번 실행된다는 점을 제외하면 while 루프와 유사합니다.
하다 {
//코드문}while(부울 표현식);
참고: 부울 표현식은 루프 본문 뒤에 있으므로 부울 표현식이 감지되기 전에 명령문 블록이 실행되었습니다. 부울 표현식이 true로 평가되면 부울 표현식이 false로 평가될 때까지 명령문 블록이 실행됩니다.
공개 클래스 테스트 {
공개 정적 무효 메인(문자열 인수[]){
정수 x = 10;
하다{
System.out.print("x의 값 : " + x );
x++;
System.out.print("n");
}동안( x < 20 );
위 예제의 컴파일 및 실행 결과는 다음과 같습니다.
x의 값: 10
x의 값 : 11
x의 값 : 12
x의 값 : 13
x의 값 : 14
x의 값: 15
x의 값: 16
x의 값 : 17
x의 값 : 18
x의 값 : 19
모든 루프 구조는 while 또는 do...while로 표현할 수 있지만 Java는 일부 루프 구조를 더 단순하게 만드는 for 루프라는 또 다른 명령문을 제공합니다.
for 루프가 실행되는 횟수는 실행 전에 결정됩니다. 구문 형식은 다음과 같습니다.
for(초기화; 부울 표현식; 업데이트) {
//코드문}
다음은 for 루프에 대한 몇 가지 참고 사항입니다.
초기화 단계가 먼저 수행됩니다. 유형을 선언할 수 있지만 하나 이상의 루프 제어 변수를 초기화하거나 빈 문일 수 있습니다.
그런 다음 부울 표현식의 값을 테스트합니다. true이면 루프 본문이 실행됩니다. false인 경우 루프가 종료되고 루프 본문 다음에 오는 명령문의 실행이 시작됩니다.
루프를 한 번 실행한 후 루프 제어 변수를 업데이트합니다.
부울 표현식을 다시 확인하세요. 위의 프로세스를 루프로 수행합니다.
공개 클래스 테스트 {
공개 정적 무효 메인(문자열 인수[]) {
for(int x = 10; x < 20; x = x+1) {
System.out.print("x의 값 : " + x );
System.out.print("n");
}
}
}
위 예제의 컴파일 및 실행 결과는 다음과 같습니다.
x의 값: 10
x의 값 : 11
x의 값 : 12
x의 값 : 13
x의 값 : 14
x의 값: 15
x의 값: 16
x의 값 : 17
x의 값 : 18
x의 값 : 19
Java5에서는 주로 배열을 위한 향상된 for 루프를 도입했습니다.
Java의 향상된 for 루프 구문 형식은 다음과 같습니다.
for(선언문: 표현식)
{
//코드 문장}
선언문: 새 지역 변수를 선언합니다. 변수 유형은 배열 요소 유형과 일치해야 합니다. 그 범위는 루프 문 블록으로 제한되며, 그 값은 이때 배열 요소의 값과 같습니다.
표현식: 표현식은 액세스할 배열의 이름이거나 배열을 반환하는 메서드입니다.
공개 클래스 테스트 {
공개 정적 무효 메인(문자열 인수[]){
int [] 숫자 = {10, 20, 30, 40, 50};
for(int x : 숫자){
System.out.print(x);
System.out.print(",");
}
System.out.print("n");
String [] names ={"제임스", "래리", "톰", "레이시"};
for( 문자열 이름 : 이름 ) {
System.out.print(이름);
System.out.print(",");
}
}
}
위 예제의 컴파일 및 실행 결과는 다음과 같습니다.
10,20,30,40,50,
제임스, 래리, 톰, 레이시,
break는 전체 명령문 블록에서 벗어나기 위해 루프 문이나 스위치 문에서 주로 사용됩니다.
break는 가장 안쪽 루프에서 벗어나 루프 아래의 명령문을 계속 실행합니다.
break의 사용법은 매우 간단합니다. 이는 루프 구조의 명령문입니다.
부서지다;
공개 클래스 테스트 {
공개 정적 무효 메인(문자열 인수[]) {
int [] 숫자 = {10, 20, 30, 40, 50};
for(int x : 숫자) {
if( x == 30 ) {
부서지다;
}
System.out.print(x);
System.out.print("n");
}
}
}
위 예제의 컴파일 및 실행 결과는 다음과 같습니다.
10
20
계속은 모든 루프 제어 구조에 적용됩니다. 이 기능은 프로그램이 루프의 다음 반복으로 즉시 점프할 수 있도록 하는 것입니다.
for 루프에서 continue 문은 프로그램이 업데이트 문으로 즉시 점프하도록 합니다.
while 또는 do...while 루프에서 프로그램은 즉시 부울 표현식의 판단문으로 점프합니다.
continue는 루프 본문의 간단한 문입니다.
계속하다;
공개 클래스 테스트 {
공개 정적 무효 메인(문자열 인수[]) {
int [] 숫자 = {10, 20, 30, 40, 50};
for(int x : 숫자) {
if( x == 30 ) {
계속하다;
}
System.out.print(x);
System.out.print("n");
}
}
}
위 예제의 컴파일 및 실행 결과는 다음과 같습니다.
10
20
40
50