배열 기초

  • 같은 타입의 데이터들이 연속적으로 저장된다.
  • 배열의 생성은 배열에 대한 레퍼런스 변수를 생성하고 배열을 생성한다.
  • 배열의 인덱스는 정수만 가능하다.

래퍼런스 변수 생성
int intArray[];

배열 생성
intArray = new int[5];

예시


양수 5개를 입력받아 배열에 저장하고, 제일 큰 수를 출력하는 프로그램을 작성하라.

import java.util.Scanner;
public class ArrayAccess {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int intArray[] = new int[5];
        int max = 0;
        System.out.println("양수 5개를 입력하세요.");
        for(int i=0; i<5; i++) {
            intArray[i] = scanner.nextInt();
            if(intArray[i] > max)
                max = intArray[i];
        }
        System.out.print("가장 큰 수는"+max + "입니다.");

        scanner.close();
    }
}

실행결과
양수 5개를 입력하세요.
39
28
17
3
9
가장 큰 수는39입니다.

length 필드


  • 자바에서는 배열을 객체로 다룬다. 객체에는 배열의 저장 공간의 함께 배열의 크기 값을 가진 legnth 필드가 존재한다.
  • length 필드가 있기에 배열의 크기를 따로 관리할 필요가 없다.

예시


배열의 legnth 필드를 이용하여 배열 크기만큼 정수를 입력받고 평균을 구하는 프로그램을 작성하라.


import java.util.Scanner;

public class ArrayLength {
    public static void main(String[] args) {

        int intArray[] = new int [5];
        int sum = 0;


        Scanner scanner = new Scanner(System.in);
        System.out.print(intArray.length+"개의 정수를 입력하세요>> ");
        for(int i=0; i<intArray.length; i++) {
            intArray[i] = scanner.nextInt();
        }

        for(int i=0; i<intArray.length; i++) {
            sum += intArray[i];
        }

        System.out.print("평균은 "+ (double)sum/intArray.length);
        scanner.close();
    }
}

실행결과
5개의 정수를 입력하세요>> 3 6 2 67 3 1
평균은 16.2

for-each 문


  • 배열 또는 나열의 크기만큼 루프를 돌면서 각 원소에 순차적으로 접근할 때 유용하게 만든 변형 for 문이 for-each 문이다.

for (변수 : 배열래퍼런스) {
    ...반복작업문...
}

배열 n에 들어 있는 모든 정수를 더하는 코드를 for-each 문으로 작성하면 다음과 같다.


int [] n = {1,2,3,4,5};
int sum = 0;
for (int k : n){ // n.length만 반복, k는 n[0], ..., n[4]로 번갈아 반복
    sum += k;
}

위 아래 코드는 서로 같다.

for (int i=0; i<n.length; i++){
    int k=n[i];
    sum+=k;

예시


for-each 문을 활용하는 사례를 보자.


public class foreachEx {
    enum Week {월,화,수,목,금,토,일}

    public static void main(String[] args) {
        int [] n = {1,2,3,4,5};
        String names[] = {"사과", "배", "바나나", "체리", "딸기", "포도"};

        int sum = 0;
        for (int k:n) {
            System.out.print(k+ " ");
            sum += k;
        }
        System.out.println("합은" +sum);

        for(String s: names) {
            System.out.print(s + " ");

        }
        System.out.println();

        for(Week day : Week.values()) {
            System.out.print(day + "요일");

        }
        System.out.println();
    }
}

실행결과
1 2 3 4 5 합은15
사과 배 바나나 체리 딸기 포도 
월요일화요일수요일목요일금요일토요일일요일

배열에 대한 개념내용 보충이 필요하다. for-each 문은 변형된 문법이기에 확실히 아는 것이 중요하다.

+ Recent posts