배열의 크기와 인덱스
다른 언어와 동일하게 자바에서도 배열의 인덱스는 정수만 가능하며 정수형 상수도 사용할 수 있다. 인덱스는 0부터 시작하며 마지막 원소의 인덱스는 (배열의 크기 - 1)이 된다. 예를 들어서 “int intArray = new int[5];” 라는 문장을 통해서 정수형 배열 intArray를 생성하게 되면, 이 배열의 크기는 5가 되고, 인덱스는 0부터 4까지 존재하게 된다.
1. 배열의 크기, length 필드
자바에서는 배열도 하나의 객체처럼 다루어진다. 객체에 대해서 아직 다루지 않았기에 모를 수도 있겠지만, 자바에서 객체는 필드라는 변수를 가질 수 있다. 이 변수는 각 객체마다 고유하게 가지게 되는 특성이라고 생각하면 된다. 객체에 대해서 더 자세한 개념은 이후에 설명하도록 하겠다.
자바에서 배열은 하나의 객체로 취급되고 관리되기 때문에, 이 배열 역시 필드를 가지고 있다. 배열은 length 라는 이름의 필드를 가지고 있는데, 이 필드는 배열의 크기를 알고 싶을 때에 사용한다.
i.e.
int a[] = new int[10];
int len = a.length; //변수 len에 저장되는 값은 배열 a의 크기인 10이 된다.
위의 예에서 볼 수 있듯이, 배열의 레퍼런스 뒤에 점을 찍고 그 뒤에 "length" 라고 쓰면 해당 배열의 length 필드의 값, 즉, 해당 배열의 크기의 값을 가질 수 있게 된다. 이 length 필드는 주로 for 문과 배열의 연계 시에 사용된다.
for (int i =0; i < a.length; i++) {
System.out.println(a[i]);
}
2. 배열과 for-each 문
앞서 반복문에 대해서 설명을 할 때에 for-each 문에 대해서 잠깐 언급만 했었기에 잊어버렸을 수도 있겠지만, for-each 문은 for 문을 보완한 형태의 반복문이다.
for 문을 변형한 for-each 문은 배열이나 나열(enumeration)의 각 원소를 순차적으로 접근하는데에 매우 유용하다. 다음은 for-each 문을 사용하여 정수 배열에 대해 각 원소를 순차적으로 접근하여 배열의 합을 구하는 코드이다.
int num[] = {1,2,3,4,5};
int sum = 0;
for (int k : num) {
sum += k;
}
위의 코드를 통해서 알 수 있듯이, for-each 문은 일반적인 for 문과는 전혀 다른 형태를 하고 있다. for-each 문의 구문은 다음과 같다.
for (배열내 원소의 값을 받아줄 변수 : 내부의 원소들을 모두 보고 싶은 자료구조) {
.. 작업문 ..
}
이 for-each 문은 주어진 자료구조의 크기만큼 반복하고, 반복할 때마다 사용할 원소의 인덱스를 1씩 증가시킨다. 따라서, 단순히 자료구조 내의 모든 원소들을 사용하고 싶을 경우에는 for-each 문을 사용하는 것이 좋다. 다만, 원소의 값뿐만이 아니라 그 인덱스의 값 역시 사용을 해야 할 경우에는 일반적인 for 문이 더 적합하다. 추가로, for 문을 사용하게 되면, 반복 후 작업문을 통해서 인덱스의 증가값을 원하는 대로 설정할 수 있다. 예를 들면, 인덱스가 짝수인 원소들만 사용하고 싶은 경우 "for (int i = 0; i < array.length; i += 2)" 와 같은 형태로 for 문을 이용하는 것이 가장 적합한 반복문의 사용법이 될 것이다.
- for-each 문의 장점
1) 일반적인 for 문보다 문법이 후러씬 간결하다
2) 값을 꺼내서 담아주는 역할(변수)까지 해준다.
3) for 문과 달리 배열이나 자료구조의 크기를 알아야 할 필요가 없다.
'Java > Java 기본' 카테고리의 다른 글
메소드에서 배열 리턴 (0) | 2018.06.12 |
---|---|
다차원 배열 (0) | 2018.06.12 |
배열 원소 접근 (0) | 2018.06.12 |
배열의 참조 (0) | 2018.06.11 |
배열 (Array) (0) | 2018.06.11 |