나의 IT일지
배열 지원 함수 본문
프로그래밍에서 반복문을 통해 배열의 값을 호출하고, 문제를 처리한다. 그런데 자바에서는 반복문을 사용하지 않고 배열을 사용해서 문제를 처리할 수 있는 기능이 몇몇 존재한다. 그 중 배열복사기능와 for each문에 대해서 알아보자.
배열 복사기능
배열의 값을 다른배열에 복사를 할려면, 각 배열의 인덱스값을 사용해서 배열을 호출하고 "="연산자를 통해 값을 저장해야 한다.
package project0330;
import java.util.Arrays;
public class Code1 {
public static void main(String[] args) {
int a[] = {1,2,3,4,5,6};
int b[] = new int[7];
for(int i=0;i<4;i++) {
b[i+3] = a[i+2];
}
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
}
}
위의 for문은 배열을 복사하는 코드로, 기존 배열에서 값을 호출한 뒤, 새로운 배열에 값을 대입하며, 대입되지 않는 배열 요소들은 기존의 값을 유지한다. 이러한 복사 for문을 한 메소드로 표현이 가능하다.
System.array(src,srcPos,dest,destPos,length)
- src : 원본배열
- srcPos : 복사할 항목의 시작 인덱스
- dest : 복사할 배열
- destPos : 붙여넣기 할 항목의 시작 인덱스
- length : 복사할 내용
위의 메소드는 원본배열의 내용을 다른배열에 복사하는 메소드로, for문에 대입해서 설명하면, src는 "배열 a", srcPos는 "배열 a의 인덱스에 연산되는 값([i+2])", dest는 "배열 b", destPos는 "배열 b의 인덱스에 연산되는 값([i+3])", length는 "for문이 반복되는 횟수"를 나타낸다.
package project0330;
import java.util.Arrays;
public class Code1 {
public static void main(String[] args) {
int a[] = {1,2,3,4,5,6};
int b[] = new int[7];
System.arraycopy(a, 2, b, 3, 4); //a[2]에서부터 4개를 b[3]에서부터 복사
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
}
}
for each문
자바는 배열을 좀 더 쉽게 처리하기 위해서, 초기식, 조건식, 증감식 대신에 배열에서 호출한 요소의 값을 저장할 변수와 호출할 배열을 조건으로 사용한다.
for(타임 변수명: 배열명){ 변수가 배열을 순환하면서 반복할 명령 } |
for each문의 흐름은 먼저, 배열의 각 요소를 처음부터 하나씩 호출한 뒤, 변수에 값을 저장한다. 그 다음 블록내의 명령이 끝나면, 다음 요소를 호출한다. 그리고 이러한 반복을 배열의 요소가 없을 때 까지 진행이 된다. 즉, 배열의 요소의 수만큼 반복문을 진행하는 것이다.
package project0330;
public class Code2 {
public static void main(String[] args) {
String a[]= {"Java","hello","program"};
for(String i:a) {
System.out.println(i);
}
int b[] = {1,2,3,4,5};
for(int i:b) {
System.out.println(i);
}
}
}