티스토리 뷰
목차
자바 입문하는 분들을 위한 글입니다.
이 포스트에선 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 = {1, 2, 3, 4, 5}; 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 = { 5, 3, 6, 8, 2, 5, 9, 2, 4, 1 }; // 원본 배열 선언 int[] bar = new int[15]; // 데이터 5개 추가 가능한 더 큰 배열 // 배열 bar에 직접 복사 System.arraycopy(foo, 0, bar, 0, 10); // 배열 bar for (int i = 0; i < bar.length; i++) { System.out.print(bar[i] + ", "); } } } | cs |
실행 결과
1 | 5, 3, 6, 8, 2, 5, 9, 2, 4, 1, 0, 0, 0, 0, 0, | 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 = { 5, 3, 6, 8, 2, 5, 9, 2, 4, 1 }; int[] bar = foo.clone(); // 배열 bar 출력 for (int i = 0; i < bar.length; i++) { System.out.print(bar[i] + ", "); } } } | cs |
실행 결과
1 | 5, 3, 6, 8, 2, 5, 9, 2, 4, 1, | 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 = { 5, 3, 6, 8, 2, 5, 9, 2, 4, 1 }; // 원본 배열 int[] bar = new int[10]; // 복사할 배열 // 배열 bar에 복사 System.arraycopy(foo, 0, bar, 0, 10); // 배열 bar for (int i = 0; i < bar.length; i++) { System.out.print(bar[i] + ", "); } } } | cs |
실행 결과
1 | 5, 3, 6, 8, 2, 5, 9, 2, 4, 1, | 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 = {10, 30, 5, 2, 11, 90}; Arrays.sort(foo); // 배열 foo for (int i = 0; i < foo.length; i++) { System.out.print(foo[i] + ", "); } } } | cs |
실행 결과
1 | 2, 5, 10, 11, 30, 90, | 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 = {10, 20, 30}; int[] bar = {5, 15, 25}; 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 | 10, 20, 30, 5, 15, 25, | 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가지