[Java] 배열(Array) 선언 방법 및 예제
배열은 동일한 자료형(Data Type)의 데이터를 연속된 공간에 저장하고 데이터에 접근하기 위한 인덱스(index)를 부여한다. 자바에서 배열을 선언하는 일반적인 형식은 다음과 같다.
자료형[] 변수 = {데이터1, 데이터2, 데이터3, … };
자료형[] 변수 = new 자료형[배열크기];
//배열 선언 2가지 방법
String[] s;
String s[];
int[] i;
int i[];
//배열 생성과 동시에 5개의 주소(인덱스)를 할당하였다.
int[] i = new int[5];
String[] s = new String[5];
//한주를 배열에 초기화 하는 방법 1
String[] week = {"월", "화", "수", "목", "금", "토", "일"};
//한주를 배열에 초기화 하는 방법 2
String[] week = new String[7];
weeks[0] = "월";
weeks[1] = "화";
weeks[2] = "수";
weeks[3] = "목";
weeks[4] = "금";
weeks[5] = "토";
weeks[6] = "일";
다음 샘플코드를 살펴보자
배열의 값을 월화수목금토일로 초기화 하였다. 배열의 인덱스가 부여되었음으로 접근이 가능하다. 배열의 인덱스는 0부터 시작한다. 총 7개의 문자열이 배열에 할당되었다. 그럼으로 배열의 인덱스 값은 0부터 6까지 이다.
배열에 접근하는 방법은 for문을 사용하거나 직접 인덱스 값으로 접근할 수 있다. 부여되지않은 인덱스값으로 접근할 경우 ArrayIndexOutOfBoundsException 오류가 발생하게됨으로 주의해야한다.
package edu.sample;
public class arrayTest {
public static void main(String[] args) {
String[] week = {"월", "화", "수", "목", "금", "토", "일"};
//for문을 통한 배열 출력
for (int i=0; i<week.length; i++) {
System.out.println(week[i]);
}
//foreach문을 통한 배열출력
for(String w:week) {
System.out.print(w);
}
System.out.println("배열의 첫번째 값은 : " + week[0]);
System.out.println("배열의 세번째 값은 : " + week[4]);
System.out.println("배열의 여섯번째 값은 : " + week[7]);
}
}
■출력결과
배열은 길이는 고정 되어 있다. 만약 크기를 부여하지 않고 아래와 같이 초기화하면 컴파일 오류가 발생한다.
public class arrayTest {
public static void main(String[] args) {
String[] week = new String[];
}
}
배열을 초기화 하는 두번째 방법은 Arrays클래스의 fill()메소드를 사용하는 방법이다. 이때 java.util.Arrays를 임포트 선언하여야 한다. 이클립스를 사용하게되면 선언한 클래스가 없을때 빨간줄로 표기되며, 그 위에 마우스를 올리면 팝업 메뉴가 나타남으로 클릭하여 import 할 수 있다. 또는 단축키를 쓰면 된다. (alt +shift+ o)
package edu.sample;
import java.util.Arrays;
public class arrayTest {
public static void main(String[] args) {
String[] week = new String[3];
//배열의 주소를 모두 같은값으로 초기화
Arrays.fill(week,"GO");//i_array의 모든 index값을 1로 초기화
for (int i=0; i<week.length; i++) {
System.out.println(week[i]);
}
}
}
■출력결과
■문자열(String)값을 배열에 한글자씩 할당하기
package edu.sample;
public class arrayTest {
public static void main(String[] args) {
String sword = "Hello World";
String[] array_sword;
array_sword = sword.split(""); //배열에 한글자씩 할당하기
for(int i=0;i<array_sword.length;i++) {
System.out.println(array_sword[i]);
}
}
}
배열을 사용하면 코드의 양을 많이 줄일 수 있으며, 유지보수가 편하다.