본문 바로가기
C++ 200제/코딩 IT 정보

자바 배열 선언, 초기화, 사용법 - JAVA 입문

by vicddory 2019. 6. 30.

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


이 포스트에선 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

댓글