【Java개발】제4회 루프

Java입문강좌

시작하며

여러분 안녕하세요!

DreamHanks의254cm입니다.

오늘은 루프에 대해 알아보도록 하겠습니다.

Java의 전체 기사는 여기를 클릭해 주세요.

이전 기사는【Java개발】제3회 조건분기에 대해서 배워봤습니다.

 

루프

・루프란?

루프는 어떤 조건을 만족하고 있는 동안 임의의 처리를 반복해서 실행하는 것입니다.

Java는 루프동작을 하기 위해 4가지 기술을 제공하고 있습니다.

・Java루프의 종류

・for문
・확장for문
・while문
・do while문

위의 4가지가 Java의 루프입니다.

 

for

・for란?


for문은 조건식이 TRUE인 경우  괄호「{ }」안에 처리를 반복해서 하는 것입니다.

for문의 조건식이 FALSE가 되면 처리를 안합니다.

즉, 어떤 특정한 조건이 거짓으로 판별될 때까지 처리를 반복하고 false가 되면 처리를 종료합니다.

for는 반복하는 횟수가 정해져 있을때 잘 사용됩니다.

 

〇 초기화식이란?

초기화식에 기술된 소스코드는 for문에서 최초로 조건식이 판정되기전에 한번만 실행되는 소스코드입니다.

보통은 for문의 횟수를 세기위해 변수를 초기화합니다.

 

・샘플

 

위의 소스를 보면

초기화 식에서 「int i = 0;」이라고 작성해서 변수i를 선언하고 있습니다.

이처럼 초기화식에서

이렇게 초기화식에서는 for에서 사용할 변수들을 선언하기도 합니다.

 

〇 변화식이란?

for에 의한 반복처리가 1회 끝날 때마다 실행되는 내용을 기술합니다.

주로 for의 반복 횟수를 증가시키기 위해 사용됩니다.

・샘플

 

위의 소스를 보면

변화식에서는 초기화식에서 선언된 i를 조작하고있습니다.

증감연산자「++」를 사용해서 i의 값을 변화시키고 있습니다.

for에 대한 이해를 돕기위해 위의 for의 루프1회의 실행순서를 설명하겠습니다.

① 초기화식이 실행되고「int i = 0;」가 선언 또는 초기화됩니다.

② 조건식을 확인합니다. 현재 i의 값은 0입니다. i < 5 조건은 true가 됩니다.

③ 조건식이 true이기 때문에 괄호안의 처리 「sum = sum + i;」가 실행됩니다.

④ sum의 값0과i의 값0을 더한 결과를 변수 sum에 대입합니다.

⑤ 1회의 for문 처리가 끝나고 i의 증감연산자가 실행됩니다.

⑥ 증감연산의 결과가 반영되고 i의 값은 1이됩니다.

여기까지가 1회 루프의 과정입니다.

2번째 루프부터는 초기화식이 실행되지 않고 ②~⑥까지 반복됩니다.

이처럼 루프는 조건식이 false가 되기까지 처리가 반복됩니다.

즉, i가 5가 될때까지 for문안에 있는 처리가 반복됩니다.

 

확장for

확장for란?

 

확장for는 배열 또는 콜렉션으로부터 요소를 하나씩 꺼내 그 값을 변수에 대입해서 조작하는 for입니다.

확장for문은 추출하고싶은 배열이나 콜렉션에서 추출한 값을 넣을 변수로 구성됩니다.

확장for문은 콜렉션의 데이터를 모두 추출할때 까지 반복합니다.

요소는 index 0부터 순서대로 추출됩니다.

확장for는 배열 또는 콜렉션을 배우기 전에는 이해하기 어려우므로

다음에 배열을 배우고 난 뒤 공부하는 것이 좋을 거 같습니다.

※변수는 추출된 값을 대입하기 위해 존재하고 추출된 값과 데이터형이 일치해야합니다.

・샘플

 

위의 소스코드를 실행해 보면 확장for가 배열의 요소를 하나씩 추출합니다.

요소가 추출될 때마다 확장for문안의 처리가 실행되고 실행결과는

와 같이 됩니다.

while

while이란?


while은 조건이 만족하고 있는 동안 확장문 안에 있는 처리를 몇번이라도 반복하는 것입니다.

for문은 반복횟수를 지정하지만 while문은 조건이 만족하고 있는 동안은 무한으로 처리가 반복됩니다.

즉, 반복횟수를 잘 모르는 경우에 사용됩니다.

while은 조건식을 판단하고 true일 경우는 확장문 안의 처리가 실행됩니다.

while은 초기식이 없어서 필요한 변수는 while문 밖에서 선언해서 사용하는 경우가 많습니다.

※for와 while은 조건문 안의 처리를 반복하는 것으로 안에 변수를 선언하는 것과 다음 루프에서 또  선언하는 것으로 값의 변화는 저장되지 않습니다.

・샘플

 

위 소스코드를 보면 몇번이나 처리가 반복되는지는 몰라도

특정 조건식「value < 100」가 만족될때 까지 반복됩니다.

do/while

 

do/while은 조건식이 true일  경우 do안의 처리를 반복하는 것입니다.

do/while은 while과 비슷하지만

지금까지의 루프와 달리 do/while은 실행 될 때 조건식이 false라도 처음 1번은 무조건 실행됩니다.

・샘플

 

위의 소스를 보면 변수 a는 1이기 때문에 조건식 「a > 10」를 만족하지 못합니다.

하지만 do/while은 조건식이 만족하지 못해도 do 안의 처리를 1번 실행합니다.

그러므로 위의 소스를 실행시키면

 

가 출력됩니다.

루프의 제어

지금까지의 루프는 조건식이 true일 경우 다음 루프에 도달하기까지 안의 처리를 전부 실행합니다.

하지만 Java는 그 흐름을 강제로 제어하는것이 가능합니다.

Java는 루프의 처리를 제어하기 위해 2가지를 제공합니다.

・continue
・break

다만 이러한 루프제어는 주의해서 사용하지 않으면 의도한대로 움직이지 않을 수도 있습니다

 

continue

continue는 실행되면 continue가 적혀 있는 이하의 처리를 무시하고 다음 루프로 갑니다.

・샘플

위의 소스코드에서는 i가 3이 됐을 때 if의 조건식이 만족되고

if의 continue가 실행됩니다.

continue가 실행됐을 때 continue이하의 존재하는 「System.out.println(i);」가 무시되어서 실행되지않습니다.

그래서 위 소스코드의 실행 결과는

가 됩니다.

다만 continue는 if등 주의해서 사용해야 합니다.

if를 사용하지 않으면

 

continue가 루프때마다 실행되고 continue이하의 소스코드는 영원히 실행되지 않습니다.

 

break

break는 실행 될 때 해당 루프자체를 완전히 종료합니다.

・샘플

 

위의 소스코드에서는 i가 3이 됐을 경우 if문의 조건식에 만족되어

if의 break가 실행됩니다.

break가 실행될 때 루프가 종료되고 4번째 5번째의 루프는 실행되지 않습니다.

그러므로 위의 소스코드의 실행결과는

가 됩니다.

이 break도 위의 continue와 같이 실행되는 타이밍을 주의해서 사용해야 합니다.

 

끝으로

여기까지 기사를 마치겠습니다.

다음은 Java의클래스에 대해 알아보도록 하겠습니다.

감사합니다.

 

コメント