배열은 자료들을 모아놓는 자료구조의 일종으로 동일한 자료형을 순차적으로 관리하는 기능을 합니다.
배열을 선언하기 위해선 '자료형[] 변수명 = new 자료형[인덱스 크기]'으로 사용하고 예를 들어int[] arr= new int[10];와 같이 선언합니다.
배열의 메모리 구조 아래 그림과 같이 자료형 크기의 맞는 메모리가 1열로 선언한 갯수만큼 생성됩니다. 그래서 배열은 물리적인 위치와 논리적인 위치가 동일하다고 합니다.
배열은 0번 부터 시작합니다. int[10]이면 위치가 1~10가 아닌 0~9입니다. 정리하면 int[] arr = new int[n]라면 인덱스 번호는 0~n-1까지 입니다.
예제
int[] arr1 = new int[] {1,2,3};
int[] arr2 = {1,2,3};
int[] arr3;
arr2 = new int[]{1,2,3};
int[] arr4 = new int[3];
arr4[0] = 1;
arr4[1] = 2;
arr4[2] = 3;
위와 같은 방식으로 배열을 입력할 수 있습니다. 배열은 자료형 뒤에 대괄호[]가 붙고 값을 중괄호{}안에 콤마','로 구분하여 넣습니다.
public static void main(String[] args) {
//1번
int[] arr = new int[10];
//2번
for(int i = 0, num =1; i <arr.length ; i++,num++) {
arr[i] = num;
}
//3번
int sum = 0;
for(int i = 0; i<arr.length ; i++) {
sum += arr[i];
}
System.out.println(sum); //55
}
배열을 통하여서 1~10까지 합을 구하는 예제입니다.
double[] dArr = new double[5];
dArr[0] = 1.1;
dArr[1] = 2.1;
dArr[2] = 3.1;
double mtotal = 1;
for(int i = 0; i<dArr.length; i++) {
mtotal *= dArr[i];
}
System.out.println(mtotal);//0
다음예제는 유의사항으로 다음과 같이 5개의 배열 중 3개만 입력한 상황에서 length만큼 반복해서 곱셈을 하였더니 결과값이 0.0이 나왔습니다. 이는 값을 입력하지 않은 dArr[3],dArr[4]가 초기값인 0.0로 잡혀있기 때문입니다.
이 문제를 해결하기 위해 아래와 같이 count 변수를 선언하고 배열에 변수를 대입할 때 마다 conut++을 해주고 조건에 dArr.length대신 count를 넣어주면 결과값을 얻을 수 있습니다.
double[] dArr = new double[5];
int count = 0;
dArr[0] = 1.1; count++;
dArr[1] = 2.1; count++;
dArr[2] = 3.1; count++;
double mtotal = 1;
for(int i = 0; i<count; i++) {
mtotal *= dArr[i];
}
System.out.println(mtotal);//7.161
Q. 배열문제
문자 배열을 생성하고 출력해 보세요.
대문자를 A-Z까지 배열에 저장하고 이를 다시 출력하는 프로그램을 만들어 보세요.
public static void main(String[] args) {
//1번
char[] alpahbets = new char[26];
char ch = 'A';
//2번
for(int i = 0; i < alpahbets.length ; i++) {
alpahbets[i] += ch++;
}
//3번
for(int i = 0; i < alpahbets.length; i++) {
System.out.println(alpahbets[i]+","+(int)alpahbets[i]);
}
}