[JAVA NOTE]6. LOOP
반복문이란?
- 같은 행동을 반복 실행하는 문법
- 소스코드의 효율성과 코드의 가독성을 높임
- for/while/do-while 문
for문
- 초기식(시작조건),조건식(실행조건),증감식으로 구성됨
for( 초기식(시작조건) ; 조건식(실행조건) ; 증감식 ) {
// 반복 내용
}
for( 초기식(시작조건) ; 조건식(실행조건) ; 증감식 )
→ 초기식(시작 조건)에서는 변수 1개를 선언하거나 for문 밖에서 선언된 변수의 값을 바꿀 수 있음 , 만약 초기식에서 변수를 선언했다면 그 변수는 for문을 벋어날 수 없으며 시작 조건은 처음 1회만 실행됨 → 지역변수의 특징을 가지고 있다는 점! 염두해두기
→ 조건식(실행 조건)이 true를 만족할 때 for문이 동작함
→ 증감식은 변수의 값을 변화 시킬 수 있음 전위 연산자를 사용하는 것을 제외 하고 for문의 중괄호 부분이 실행된 이후 이 부분이 동작함
{// 반복 내용}
→ 중괄호 내부의 소스코드는 for 문의 실행조건을 만족할 시 동작하는 구간
→ 중괄호가 존재하지 않아도 for문은 동작하지만 그 경우 for문 괄호 다음의 한 줄만 동작합니다.
→ break 문을 사용하면 for문을 벗어날 수 있습니다.
→ 중괄호 내부에서 선언된 변수는 중괄호를 벗어나면 사용이 불가능합니다. → 지역변수
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
for(int i = 1 ; i <= 3 ; i++) {
System.out.println(i + "번째 반복");
}
}
}
for( 초기식(시작조건) ; 조건식(실행조건) ; 증감식 ) {
// 반복 내용
}
for( 초기식(시작조건) ; 조건식(실행조건) ; 증감식 )
→ 초기식(시작 조건)에서는 변수 1개를 선언하거나 for문 밖에서 선언된 변수의 값을 바꿀 수 있음 , 만약 초기식에서 변수를 선언했다면 그 변수는 for문을 벋어날 수 없으며 시작 조건은 처음 1회만 실행됨 → 지역변수의 특징을 가지고 있다는 점! 염두해두기
→ 조건식(실행 조건)이 true를 만족할 때 for문이 동작함
→ 증감식은 변수의 값을 변화 시킬 수 있음 전위 연산자를 사용하는 것을 제외 하고 for문의 중괄호 부분이 실행된 이후 이 부분이 동작함
{// 반복 내용}
→ 중괄호 내부의 소스코드는 for 문의 실행조건을 만족할 시 동작하는 구간
→ 중괄호가 존재하지 않아도 for문은 동작하지만 그 경우 for문 괄호 다음의 한 줄만 동작합니다.
→ break 문을 사용하면 for문을 벗어날 수 있습니다.
→ 중괄호 내부에서 선언된 변수는 중괄호를 벗어나면 사용이 불가능합니다. → 지역변수
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
for(int i = 1 ; i <= 3 ; i++) {
System.out.println(i + "번째 반복");
}
}
}
위의 for문 동작 방식
- 초기식에서 i가 1로 초기화됨
- i가 조건식 i≤3에 만족하여 해당 내용을 실행하여 “1번째 반복”이라는 출력값이 나옴
- i가 증감식에서 1을 증가시키고 다시 조건식을 검토함
- i=2인 상태로 i≤3을 만족하므로 해당 내용을 실행 “2번째 반복”이라는 출력값이 나옴
- i가 증감식에서 1을 증가시키고 다시 조건식을 검토함
- i=3인 상태로 i≤3을 만족하므로 해당 내용을 실행 “3번째 반복”이라는 출력값이 나옴
- i가 증감식에서 1을 증가시키고 다시 조건식을 검토함
- i=4인 상태로 i≤3을 만족하지 않으므로 해당 for문을 벗어남
이중 for 문
for문 내부에 for문이 존재하는 구조
import java.io.*;
class Main {public static void main(String[] args) throws Exception {
for(int i = 1 ; i <= 3 ; i++) {
for(int j = 1 ; j <= 5 ; j++) {
System.out.println("i = " + i + "번째 반복");
System.out.println("j = " + j + "번째 반복");
}
}
}
}
import java.io.*;
class Main {public static void main(String[] args) throws Exception {
for(int i = 1 ; i <= 3 ; i++) {
for(int j = 1 ; j <= 5 ; j++) {
System.out.println("i = " + i + "번째 반복");
System.out.println("j = " + j + "번째 반복");
}
}
}
}
직각삼각형 출력하기
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
for(int i=0; i<5; i++) {
for(int j=0; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
while문
- 실행 조건만으로 동작하도록 설정됨
while( /* true 혹은 false 형태의 동작 조건 */ ) {
//동작 내용
}
- 예시문제
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
int a = 1;
while(a < 3) {
int b = 0;
System.out.println(a + " " + b);
a++;
b++;
} // while 문 종료
}
}
while( /* true 혹은 false 형태의 동작 조건 */ ) {
//동작 내용
}
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
int a = 1;
while(a < 3) {
int b = 0;
System.out.println(a + " " + b);
a++;
b++;
} // while 문 종료
}
}
위 코드 동작과정
- a는 1로 초기화되어 있음
- while문에 조건식을 만나 a<3이라는 조건이 성립하므로 해당 내용을 실행함
- a=1 / b = 0 (초기화) 출력한 후 a와 b 각각 1씩 증가
- a=2 / b = 1 로 다시 while문의 조건을 검사함 a=2로 a<3을 만족하므로 내용을 실행함
- a=2 / b = 0 (초기화) 출력한 후 a와 b 각각 1씩 증가
- a=3 / b= 1 로 다시 while문의 조건을 검사함 a=3로 a<3을 만족하지 않으므로 내용을 빠져나감
- b는 while문 내부에서 선언된 변수이기 때문에 while문이 종료되는 중괄호를 만나 한루프를 마무리하게 되면 메모리에서 해제되어 더 이상 사용 X
- while문 종료에서 메모리가 해제되며 while문이 다시 동작해도 이전 루프에서 사용한 변수 b는 사라진 변수가 됨 → 지역변수
무한루프에 관하여
→ 조건이 항상 true여서 계속 반복하는 현상
→ 동작 조건을 정확하게 명시하여야 함 , 명시하지 않으면 반복문을 빠져나가지 못하고 멈추는 무한루프 발생 따라서 종료 조건 명시에 유의할것
루프?
→ 반복문에서 1회 동작하는 행동
do-while문
while문과 차이점
- while문은 동작 조건을 먼저 확인하고 동작 내용을 실행할지 하지 않을지 판단한다.
- do-while문은 우선 1회 동작한 뒤 동작 조건을 확인하여 반복 여부를 판단함
→ do-while은 무조건 1회 실행 + 조건에 맞으면 더 실행 / while은 조건에 맞았을때만
do {
// 동작 내용
} while( /* 동작 조건 */ );
→ do-while은 무조건 1회 실행 + 조건에 맞으면 더 실행 / while은 조건에 맞았을때만
do {
// 동작 내용
} while( /* 동작 조건 */ );
break / continue 문
- 강제로 반복문을 종료해야 되거나 실행부분을 건너뛸때 사용하는 문법
break문
- switch 문 및 반복문을 벗어나기 위한 문법
- break문을 만나면 즉시 반복문 혹은 switch 문이 종료됨
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
int a = 1;
while(true) {
System.out.println(a++);
if(a > 5) {
break;
}
}
}
}
//1
//2
//3
//4
//5
//break 문을 만나 빠져 나감
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
int a = 1;
while(true) {
System.out.println(a++);
if(a > 5) {
break;
}
}
}
}
//1
//2
//3
//4
//5
//break 문을 만나 빠져 나감
Continue문
- 반복문에서만 사용되는 문법
- 반복문에서 continue 문을 만나게 되면 반복문의 조건이 있는 곳으로 되돌아가게 됨
- for문에서 continue문을 만나면 그 뒤에 어떤 코드가 있던 상관 없이 바로 증감식을 실행함
- while문에서 continue문을 만나면 while문 동작 조건을 확인하는 곳으로 돌아감
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
int a = 1;
while(true) {
if(a > 10) {
break;
} else if(a % 2 == 1) {
a++;
continue;
}
System.out.println(a++);
}
}
}
- 위 코드 동작과정
-
a>10 아니라면 아래 조건 수행 a>10이라면 종료
-
a%2==1 → a가 홀수라면 (10이하) a가 1증가 되고 continue문을 만남
→ 출력문 실행 X
-
a%2==0 → a가 짝수라면 (10이하) a가 출력되고 a의 값이 1증가됨
-
Author And Source
이 문제에 관하여([JAVA NOTE]6. LOOP), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jitae/JAVA-NOTE6.-LOOP저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)