티스토리 뷰

목차

    자바 입문하는 분들을 위한 글입니다.


    이 포스트에선 Java 언어에서 배열 다루는 방법을 소개합니다. 그리고 배열과 List 차이, 상호 변환 등 응용 부분도 알려드립니다.


    배열이란?


    배열은 같은 유형의 여러 값을 한꺼번에 하나의 변수로 다룰 수 있습니다. 자바 배열 내부 값은 순서대로 나열되며, 특정 값을 검색할 수도 있습니다.


    예를 들어, 프로그램에서 10명의 나이를 저장하여 다루고 싶다면, INT 변수를 10개 선언하여 각기 저장할 수 있습니다. 그러나 배열을 사용하면 10개의 변수 대신 하나의 배열만 선언하여 10명의 나이를 순차적으로 저장할 수 있습니다.

    배열 사용 방법

    배열 선언


    배열을 사용하려면 먼저 JAVA 배열 선언을 해야 합니다. 선언은 다음과 같습니다.



    1
    2
    3
    4
    5
    타입[] 배열이름;
     
    또는
     
    타입 배열이름[];
    cs



    배열 요소 수(배열 크기)를 지정하는 방법은 다음과 같습니다.



    1
    2
    타입[] 배열이름;
    배열이름 = new 타입[숫자];
    cs



    배열 선언 및 크기 지정을 정리하겠습니다.


    예를 들어 int 타입 값을 3개 저장하는 배열을 선언하는 방법은 다음과 같습니다.



    1
    2
    3
    4
    int[] foo;
    foo = new int[3];
     
    int bar[] = new int[3];
    cs



    배열 foo는 선언과 크기 지정을 별도로 실행합니다.

    배열 bar는 배열 선언 및 크기를 함께 실행합니다.



    배열 요소에 값을 대입하거나 참조하기


    자바 배열을 선언한 후 각 요소에 값을 할당할 수 있습니다. 다음과 같습니다.



    1
    배열이름[인덱스]
    cs



    인덱스는 배열의 몇 번째 위치를 가리키는 숫자입니다. 인덱스는 0부터 시작합니다. 유의하세요.


    배열 요소에 값을 할당하는 방법은 다음과 같습니다.



    1
    배열이름[인덱스] = 숫자;
    cs



    배열 요소에 값을 할당하는 예제입니다.


    샘플 프로그램


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Array01 {
     
        public static void main(String[] args) {
            int foo[] = new int[3];
     
            foo[0= 3;
            foo[1= 6;
            foo[2= 4;
     
            System.out.println(foo[0]);
            System.out.println(foo[1]);
            System.out.println(foo[2]);
        }
    }
    cs


    실행 결과


    1
    2
    3
    3
    6
    4
    cs

    선언과 동시에 값을 할당하여 초기화하는 방법


    배열도 변수처럼 선언과 동시에 값을 할당하여 초기화할 수 있습니다. 방법은 다음과 같습니다.



    1
    타입 배열이름[] = { 값1, 값2, ... };
    cs



    선언과 동시에 배열을 초기화하는 예제입니다.


    샘플 프로그램


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Array02 {
        public static void main(String[] args) {
            int[] foo = {12345};
     
            System.out.println(foo[0]);
            System.out.println(foo[1]);
            System.out.println(foo[2]);
            System.out.println(foo[3]);
            System.out.println(foo[4]);
        }
    }
    cs


    실행 결과


    1
    2
    3
    4
    5
    1
    2
    3
    4
    5
    cs



    또한 Arrays 클래스의 fill 함수를 사용하는 방법은 다음과 같습니다.


    샘플 프로그램


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import java.util.Arrays;
     
    public class Array03 {
        public static void main(String[] args) {
            int bar[] = new int[5];
            Arrays.fill(bar, 3);
     
            System.out.println(bar[0]);
            System.out.println(bar[1]);
            System.out.println(bar[2]);
            System.out.println(bar[3]);
            System.out.println(bar[4]);
        }
    }
    cs


    실행 결과


    1
    2
    3
    4
    5
    3
    3
    3
    3
    3
    cs



    배열 응용하기

    length로 배열 크기 알아내기


    배열 요소 수(배열 크기)를 얻으려면 length를 사용합니다. length는 필드나 메소드가 아니라 배열의 특별한 자바 문법입니다.


    샘플 프로그램


    1
    2
    3
    4
    5
    6
    public class Array04 {
        public static void main(String[] args) {
            int[] foo = new int[10];
            System.out.println("배열 :" + foo.length);
        }
    }
    cs


    실행 결과


    1
    배열 크기 : 10
    cs


    System.arraycopy 사용하여 요소 추가


    배열에 요소를 추가하는 방법은 없습니다. 다음과 같이 배열 요소를 System 클래스 arraycopy 함수를 사용하여 값을 복사합니다.



    샘플 프로그램


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Array05 {
        public static void main(String[] args) {
            int[] foo = { 5368259241 }; // 원본 배열 선언
            int[] bar = new int[15]; // 데이터 5개 추가 가능한 더 큰 배열
     
            // 배열 bar에 직접 복사
            System.arraycopy(foo, 0, bar, 010);
     
            // 배열 bar 
            for (int i = 0; i < bar.length; i++) {
                System.out.print(bar[i] + ", ");
            }
        }
    }
    cs


    실행 결과


    1
    536825924100000
    cs


    clone System.arraycopy 사용하여 요소 복사


    배열 요소를 복사하려면 clone 함수를 사용합니다.


    샘플 프로그램


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Array06 {
        public static void main(String[] args) {
            int[] foo = { 5368259241 };
            int[] bar = foo.clone();
     
            // 배열 bar 출력
            for (int i = 0; i < bar.length; i++) {
                System.out.print(bar[i] + ", ");
            }
        }
    }
    cs


    실행 결과


    1
    5368259241
    cs


    System 클래스의 arraycopy 함수를 사용하면 다음과 같습니다.


    샘플 프로그램


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Array07 {
        public static void main(String[] args) {
            int[] foo = { 5368259241 }; // 원본 배열
            int[] bar = new int[10]; // 복사할 배열
     
            // 배열 bar에 복사
            System.arraycopy(foo, 0, bar, 010);
     
            // 배열 bar 
            for (int i = 0; i < bar.length; i++) {
                System.out.print(bar[i] + ", ");
            }
        }
    }
    cs


    실행 결과


    1
    5368259241
    cs

    Array.sort 사용하여 요소 정렬


    자바 배열 요소를 순차적으로 정렬할 경우 Arrays 클래스 sort 함수를 사용합니다. Arrays 클래스는 java.util 패키지의 클래스이므로 import 문이 필요합니다.


    샘플 프로그램


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import java.util.Arrays;
     
    public class Array08 {
        public static void main(String[] args) {
            int[] foo = {1030521190};
            Arrays.sort(foo);
     
            // 배열 foo 
            for (int i = 0; i < foo.length; i++) {
                System.out.print(foo[i] + ", ");
            }
        }
    }
    cs


    실행 결과


    1
    2510113090
    cs


    System.arraycopy 사용하여 배열 합치기


    System 클래스의 arraycopy 함수를 사용하여 결합하려는 배열을 먼저 복사합니다. 그리고 새로운 배열을 추가하여 두 배열을 결합합니다.


    샘플 프로그램


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class Array09 {
        public static void main(String[] args) {
            int[] foo = {102030};
            int[] bar = {51525};
     
            int len = foo.length + bar.length;
     
            int[] hoge = new int[len];
     
            // hoge 배열에 foo 배열을 먼저 복사
            System.arraycopy(foo, 0, hoge, 0, foo.length);
     
            // hoge 배열에 bar를 ㅗㄱ사
            System.arraycopy(bar, 0, hoge, foo.length, bar.length);
     
            // hoge 배열 
            for (int i = 0; i < hoge.length; i++) {
                System.out.print(hoge[i] + ", ");
            }
        }
    }
    cs


    실행 결과


    1
    10203051525
    cs





    여기까지 JAVA 입문에 필요한 배열 선언, 사용, 응용 방법을 알아 봤습니다.


    더 많은 자바 정보는 아래 글들을 참고해주세요.


    관련 글

    Nullable, Unsafe cast 예제

    https://codingcoding.tistory.com/1071


    java code has not been included, StarUML

    https://codingcoding.tistory.com/986


    인터프리터에서 실행되는 스레드 그룹 확인

    https://codingcoding.tistory.com/653


    코드 최적화 4가지

    https://codingcoding.tistory.com/128