본문 바로가기

프로그래밍./Java

[자바] for each문 사용법.

전혀 생각지도 못한 곳에서 새로운 걸 배웠다.
뭐 사실.. 얼마나 쓰겠냐만은, 그래도 뭔가 색다른 방법을 배워서 신기했다.
반복이 진행되면서 배열의 원소를 모두 출력하는게 되는 셈인데

기본적인 사용 방법은 이렇다.


for( 자료형 변수 : 배열이름)
{
   .
   .
}

요렇게 쓰는건데 감이 안잡힐테니 아래 그림을 보자.

.

 첫번째 for문은 랜덤수를 발생시켜서 배열에 값을 넣는 일종의 초기화 작업이다.
안해도 그만이지만, 직접 값을 넣기 귀찮거나 하면 사용하기에 좋다.
지금처럼 개수가 적으면 별 효과는 없지만...
만약 Math.random() 랜덤함수 사용법을 모른다면 아래 링크를 참조하자.

2011/04/06 - [프로그래밍./Java] - [자바]Math.random() 함수 이해하기.

보면 알겠지만 두번째 for문이 for each 문이다.
num이 int형 배열이라 int val <- 요놈이 들어간 거다.

사실 여기서 이해를 잠깐 잘못했었다. 배열의 모든 요소를 출력할때까지.
즉, 배열의 길이만큼을 반복한다는 이야기인데. 그래서 난 int가 들어간 줄 알았다. 숫자대신.

헌데 여기서 중요한게 몇가지 있는데. 일단. 미리 만들어진 변수를 사용할 수 없다.
즉 for( val : num) 이렇게 자료형이 없이 변수를 쓸 수 없다는 이야기.
꼭 새로 정의된 새것으로 해야되는 듯 싶다.

그리고 정확히 이해한 제대로 된 방식은, num에 있는 요소를 val 에 대입시키는 것(복사) 이다.
val에 하나 대입해서 출력하고, num의 다음 요소를 또 val에 대입해서 출력하고. 그런 방식
즉 num에 요소를 한번씩 차례로 val에 대입하는 방식이다.

여기서는 출력으로 했지만 뭘 하든 방식은 마찬가지이다.
반복 횟수는 배열의 길이가 될테고 변수에 대입이 되는 것일테니까.



아래의 String을 보자.


여기서도 마찬가지로 test 배열에 있는 것을 str에 한번 대입해서 출력하고, 그 다음 것을 대입해서 출력하고 있다.

일반적인 for문과 비료를 하자면
배열의 처음부터 끝까지 모두 값을 사용한다면 for each가 당연히 좋다.
크기 신경 안써도 되고 알아서 다 하니까.

하지만, 원하는 범위가 있거나, 혹은 역순으로 처리를 한다거나 하는 경우.
또는 하나의 for문 안에 여러개의 배열을 처리하는 경우.
이런 경우들은 일반적인 for문을 사용해야 한다.



유용한 정보가 되셨다면 아래 손가락 버튼 한번 눌러주세요 ^-^