5.1.6 반복문을 이용해 배열 데이터 읽기

jh·2022년 1월 23일
0

Do it! 자바 완전 정복

목록 보기
37/70

배열은 동일한 자료형을 여러 개 묶어 저장한다고 했다. 따라서 배열의 모든 데이터를 출력하려면 다음처럼 배열의 길이만큼 출력해야 한다.

int[] a = new int[100];
a[0] = 1, a[1] = 2, ..., a[90] = 100;

System.out.println(a[0]); // 1
System.out.println(a[1]); // 2
// ...
System.out.println(a[99]); // 100

하지만 이건 아닌 듯하다. 하나의 배열 데이터를 출력하기 위해 무려 100줄이나 소비했다. 어쩌면 그나마 배열의 길이가 100이어서 다행인지도 모른다. 눈치챘겠지만 이럴 때 반복문을 사용하는 것이다.

배열의 길이
반복의 횟수를 결정하기 위해서는 먼저 배열의 길이를 알아야 한다. 물론 배열을 생성할 때 길이가 결정되므로 그 길이만큼 반복문을 수행하면 될 것이다. 하지만 많은 배열을 사용할 때 모든 배열의 길이를 일일이 외울 수도 없고 외울 필요도 없다. 자바는 '배열 참조 변수. length'로 배열의 길이를 구할 수 있는 쉬운 방법을 제공한다. 여기서 포인트 연산자(.)는 '해당 참조 변수가 가리키는 곳으로 가라.'라는 의미다. loength는 객체에 포함된 읽기 전용 속성으로, 배열 객체의 방 개수에 해당하는 값을 지닌다. 따라서 '배열 참조 변수. length'를 풀어 설명하면 '배열 참조 변수가 가리키는곳에 가면 배열 객체가 있는데 그 방의 개수를 가져오라.'는 의미다.

🌙배열의 길이 구하기

예시
int[]a = new int[] {3, 4, 5, 6, 7};
System.out.println(a.length); //5

배열의 길이를 알았으므로 이제 반복문을 활용해 배열의 데이터를 출력해보자. 먼저 배열의 길이로 반복 횟수가 고장되므로 for 문이 적절할 것이다. 다음과 같이 작성하면 100줄의 코드가 3줄로 줄어든다.

🌙반복문을 이용한 1차원 배열의 값 출력

int[] a = new int[100];
a[0] = 1, a[1] = 2, ..., a[99] = 100;

for (int i = 0; i < a.length; i++) {
System.out.println(a[i])
}

for - each 문을 사용하는 방법도 있다. for-each 문은 배열이나 컬렉션 collection 등의 집합 객체에서 원소들을 하나씩 꺼내는 과정을 반복하는 구문으로 집합 객체의 원소들을 출력할 때 사용한다.

🌙for - each 문
for(원소 자료형 변수명 : 집합 객체) {
}

int[] a = new int[100];
a[0] = 1, a[1] = 2, ..., a[99] = 100;

for(int k : a) {
System.out.println(k);
}

배열의 각 원소 값을 출력하는 마지막 방법은 Arrays 클래스의 toString() 정적 메서드를 사용하는 것이다. 아직은 클래스, 메서드를 잘 모르겠고 더욱이 정적이란 말은 들어보지 못했을 수도 있다. 지금 이 단계에서는 System.out.println(Arrays.toString(1차원 배열 참조 변수))를 실행하면 모든 배열의 원소가 출력된다는 것만 알아두자.

실습

        // 배열의 길이 구하기
        System.out.println(array.length);

        // 출력하기 1- 배열의 인덱스 번호를 사용해 배열의 모든 원소 값을 1개씩 출력
        System.out.print(array[0] + " ");
        System.out.print(array[1] + " ");
        System.out.print(array[2] + " ");
        System.out.print(array[3] + " ");
        System.out.print(array[4] + " ");
        System.out.println();

        // 출력하기 2 - for 문 사용
        for(int i = 0; i < array.length; i++) {
            System.out.print(array[i]+ " ");
        }
        System.out.println();

        //출력하기 3 - for-each 문 사용
        for(int k : array) {
            System.out.print(k + " ");
        }
        System.out.println();

        // 출력하기 4 - Arrays 클래스의 toString() 메서드 사용
        System.out.println(Arrays.toString(array));

결과

profile
코딩 공부 중...

0개의 댓글