ssongk
ssongk
ssongk
전체 방문자
오늘
어제

공지사항

  • resources
  • 분류 전체보기 (626)
    • CTF (24)
    • background (79)
      • fuzzing (5)
      • linux (29)
      • linux kernel (15)
      • windows (2)
      • web assembly (1)
      • embedded (0)
      • web (13)
      • crypto (9)
      • mobile (1)
      • AI (1)
      • etc.. (3)
    • write-up(pwn) (171)
      • dreamhack (102)
      • pwn.college (4)
      • pwnable.xyz (51)
      • pwnable.tw (3)
      • pwnable.kr (5)
      • G04T (6)
    • write-up(rev) (32)
      • dreamhack (24)
      • reversing.kr (8)
    • write-up(web) (195)
      • dreamhack (63)
      • LOS (40)
      • webhacking.kr (69)
      • websec.fr (3)
      • wargame.kr (6)
      • webgoat (1)
      • G04T (7)
      • suninatas (6)
    • write-up(crypto) (19)
      • dreamhack (16)
      • G04T (1)
      • suninatas (2)
    • write-up(forensic) (53)
      • dreamhack (5)
      • ctf-d (47)
      • suninatas (1)
    • write-up(misc) (13)
      • dreamhack (12)
      • suninatas (1)
    • development (31)
      • Linux (14)
      • Java (13)
      • Python (1)
      • C (2)
      • TroubleShooting (1)
    • 자격증 (8)
    • 이산수학 (1)
    • 정보보안 (0)
hELLO · Designed By 정상우.
ssongk

ssongk

development/Java

JAVA 공부 해볼까 (7)

2021. 12. 13. 14:20

for 반복 제어문

for 문의 구성 (실행 순서 : 초기식 - 조건식(true) - 실행 구문 - 증감식 - 조건식 - 실행 구문 - 증감식 ... 조건식(false) - 종료)
for(초기식; 조건식; 증감식) {
    실행 구문;  // 조건식이 true인 동안 실행
}

초기식은 for 문이 시작될 때 딱 한 번 실행되고 다시는 실행되지 않는다. 따라서 for 문 안에서만 사용할 변수는 주로 초기식에서 초기화한다. 조건식은 실행 구문으로 들아가기 위한 유일한 출입구로, 이 조건식의 결과가 true가 나오는 동안은 실행 구문을 계속 반복한다. 만일 조건식이 false가 나오면 더 이상 반복을 수행하지 않고 for 문을 빠져나간다. 즉, for문이 끝나는 위치는 닫힌 중괄호가 아니라 조건식이다. 증감식은 for 문의 실행 구문이 모두 수행된 후 닫힌 중괄호를 만나면 다음 번 반복을 위해 다시 이동하는 위치로 매회 반복이 수행될 때 마다 호출된다.

초기식에 포함될 변수는 for 문 내외에서 선언 가능한데 for 문 이전에 변수를 선언하면 for문이 끝나도 활용할 수 있다. 반대로 초기식에서 선언할 경우 for 문 안에서만 유효하다. 조건식을 비워두워 무한 루프로 활용할 수도 있다. 대부분 break 키워드로 조건을 만족했을 때 벗어나도록 한다. 

while 반복 제어문

while 문의 구성 (실행 순서 : 조건식(true) - 실행 구문 - 조건식 - 실행 구문 ... 조건식(false) - 종료)
초기식;  // 필수는 아니지만 대부분 사용
while(조건식) {  // 필수, 생략 불가능

    실행 구문;  // 조건식이 true인 동안 실행
   증감식;  // 필수는 아니지만 대부분 사용

}

for문과 하는 일은 같고, 형식이 조금 다르다. 초기식은 while 문 실행 이전에 정의 되어야 하고, 증감식은 중괄호 안에 있어야 for문과 동일한 수행을 한다. 또한, for 문과 달리 조건식을 생략할 수 없다. 만약 초기식을 중괄호 안에 넣으면 매 반복마다 초기화돼 무한 루프에 빠지게 된다. 일반적으로 while 문은 반복 횟수를 정하지 않고 특정 조건까지 반복하고자 할 때 주로 사용한다. 

do-while 반복 제어문

while 문과 매우 유사하며, 조건식의 검사와 반복 실행의 순서에만 차이가 있다.

do-while 문의 구성 (실행 순서 : 실행 구문 - 조건식(true) - 실행 구문 ... 조건식(false) - 종료)
초기식;  // 필수는 아니지만 대부분 사용
do {  // 필수, 생략 불가능

    실행 구문;  // 최초 1회는 무조건 실행
   증감식;  // 필수는 아니지만 대부분 사용

} while(조건식);  // 문법 구조상 중괄호가 없으므로 세미콜론(;)으로 끝남

마지막이 중괄호로 끝나지 않으므로 제어문들 중에서 유일하게 세미콜론(;)을 붙여야 한다. 일단 실행한 후 조건식을 검사하므로 최소 반복 횟수가 1이다. 그렇다고 해서 while 문 보다 1회 더 많이 반복하는 것은 아니다. while 문에서 반복 횟수가 0번일 때만 do-while이 1번으로 더 많은 것이고, while 문에서 1번 이상일 경우 do-while 문도 반복 횟수는 같다. 

제어문의 중복

각 제어문 내부에는 또 다른 제어문을 포함할 수 있다. 예를 들어 if 문 내에 if 문, switch 문 내부에 for 문, for 문 내부에 for 문 등 제어문을 얼마든지 중복해 사용할 수 있다. 물론, 3중, 4중도 문제없다.

break 제어 키워드

break는 if 문을 제외한 가장 가까운 중괄호를 탈출하는 제어 키워드다. 일반적으로 break는 반복문에서 특정 조건을 만족할 때 반복문을 탈출하는 데 사용한다. 만약 이중으로 중복된 for문을 탈출하고자 한다면 break는 가장 가까운 중괄호 하나만 탈출 가능하니 바깥쪽 for문의 조건식이 false가 되도록 초기식에 있는 변숫값을 탈출하기 전에 바꿔주면 된다. 자바에선 break + Lable(레이블) 문법으로 break 다음에 레이블을 지정하면 한 번에 여러 개의 반복문을 탈출할 수 있다. 레이블명은 개발자가 임의로 지을 수 있으며 레이블 다음에는 반드시 콜론을 표시해야 한다. 정리하면, 'break lable;'을 만나면 'lable:'으로 점프하는 방식이다.

continue 제어 키워드

continue는 반복 제어문의 닫힌 중괄호 역할을 하는 제어 키워드다. 'continue;'를 만나면 아직 실행할 코드가 남았어도 다음 반복을 위해 증감식으로 넘어간다. continue도 continue + Lable 문법을 사용할 수 있다. 

break, continue + Lable 예제
gate:
for (int i=0; i<5; i++) {
    for (int j=0; j<5; j++ ) {
        if(j==3)
        continue gate; // continue 또는 break
    }
    System.out.println(i + ", " + j);
    // (0, 0), (0, 1), (0, 2), (1, 0), (1, 2), ... , (4, 0), (4, 1), (4, 2)
} 

 

'development > Java' 카테고리의 다른 글

JAVA 공부 해볼까 (9)  (0) 2021.12.16
JAVA 공부 해볼까 (8)  (4) 2021.12.14
JAVA 공부 해볼까 (6)  (0) 2021.12.11
JAVA 공부 해볼까 (5)  (0) 2021.12.10
JAVA 공부 해볼까 (4)  (4) 2021.12.09
    'development/Java' 카테고리의 다른 글
    • JAVA 공부 해볼까 (9)
    • JAVA 공부 해볼까 (8)
    • JAVA 공부 해볼까 (6)
    • JAVA 공부 해볼까 (5)
    ssongk
    ssongk
    벌레 사냥꾼이 되고 싶어요

    티스토리툴바