JAVA 2011. 5. 28. 00:13
배열이란 열개의 변수가 필요한데 그 변수들이 타입, 목적 등이 비슷하다면 열개의 데이터를 

한 곳에 몰아넣고 변수로 각각 꺼내어 쓸 수 있다. 그 때 쓰는 것이 배열이다.

배열중 가장 단순한 구조가 1차원 배열인데 1차원 배열의 선언은 다음과 같다.

타입 식별자[];(int arr[];)  또는 타입[] 식별자;(int[] arr;) 이다.

하지만 이렇게 선언만 한다고 되는건 아니고 다음과같이 배열을 생성해서 변수에 대입해야한다.

new 타입[크기];(arr = new int[10];) 이렇게 사용해야 한다. 열개의 공간을 만들겠다는 의미이다.

이제 이렇게 만든 배열변수에 값을 넣으려면 그 배열에 몇 번째 인지를 알려주는 인덱스(Index)

값을 넣어주어야 한다. 배열이름[인덱스]; 이렇게 만들고 arr[0] = 12; 이렇게 사용한다. 

예제를 보자

class ArrayExample {
public static void main(String args[]){
int arr[];
arr = new int[10]; // 이렇게 열개의 배열을 생성 했다
arr[0] = 10; // 0번엔 10을
arr[1] = 20; // 1번엔 20을
arr[2] = arr[0] + arr[1]; 2번엔 0번과 1번배열 더한 것을 값으로 대입하였다. 
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}

결과는
10
20
30 으로 나온다.

알아 두고 갈것이 있는데, 왜 로컬변수처럼 선언하지않고 새로 생성을 다시 해줘야하는 이유는

변수를 하나 생성하면 그 변수에 관한 메모리 공간이 만들어지게 되는데

int arr[]; 만 만들면 그야말로 그냥 한 공간 뿐이 만들어지지 않는다. 그렇기 때문에 배열의 

메모리를 만드는 작업을 따로 해줘야하는데 그것이 배열 생성식이다 .

new int[5]; 이렇게 쓰면 다섯개의 공간이 만들어진다. 그럼 위의 배열변수를 선언할 때의

메모리는 어디다쓰냐하면 바로 배열 생성식으로 만든 다섯개의 공간을 참조하려면

참조값이 있어야하는데 이 참조값(reference value)을 담는데에 그 메모리공간을 사용한다.

쉽게말해 arr[0] 의 공간에 12라는 값을 대입했다면 얘를 쓰려할 때 이 12라는 값을 가리키는 

값이 들어가있다. 말이 어려운데 계란 한 판을 가져다 놓았다고 치고, 두번째줄에

첫번째 계란을 가져와라 라고 한다면 이  '두번째줄에 첫번째 계란을 가져와라' 라는 것이

참조값이고, 이 참조값을 담아두는곳이 아까 int arr[]; 여기서 만들어진 메모리이다.

확실히말하면. 참조값이 정확히 얘를 가리키는 주소를 말하는 것은아니다.

다만 우린 그렇게 알고 있으면 되고 나머지는 자바 가상기계가 해준다.

다차원배열도 비슷하다.

타입 식별자[][];(int arr[][];) 또는 타입[][] 식별자;(int[][] arr;) 로 선언한다. 

int[] arr[]; 이것도 되긴된단다. 혼란스러워서 안쓰지만 

2차원 배열의 생성식도 비슷하다. 

new 타입[크기1][크기2]; (arr = new int[10][10]);  이런식이다.


class ArrayExample2 {
public static void main(String args[]){
int arr[][] = new int[10][10];
arr[0][0] = 10;
arr[1][1] = 20;
arr[2][2] = arr[0][0] + arr[1][1];
System.out.println(arr[0][0]);
System.out.println(arr[1][1]);
System.out.println(arr[2][2]);
}
}

역시 같은 
10
20
30 의 결과가 찍힌다. 이런방식으로, 3차원, 4차원 배열이 모두 가능하다.

 * 배열의 초기화와 선언을 한꺼번에 하는 방법.

int arr[] = {10, 20, 30, 40, 50};  이런식으로 한꺼번에 한다. 

class Array1 {
public static void main(String args[]){
int arr[] = {10, 20, 30, 40, 50}; 
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
}
}
돌리면 10,20,30,40,50 쭉 찍힌다. 

다차원도 마찬가지이다.

int arr[][] = { {1,2,3}, {4,5,6}, {7,8,9}}; 이런식으로 중괄호로 구분을 지으면 된다 .

마지막으로 배열의 길이를 알아보는 방법인데, 배열이 위 예제처럼 열가지정도면 크기를

알기쉽지만, 복잡하고 긴 로직에선 알기 쉽지않다 그럴땐 배열이름 뒤에 .length를 붙여준다.

class arrayexam {
public static void main(String args[]){
int arr[] = {10, 20, 30, 40, 50}; 
System.out.println(arr.length);
}
}

이렇게 써주면 5 라고 찍힌다, 위에 배열 갯수를 세어보면 다섯개가 맞다.  

배열, 편하다, 잘쓰고있다 고마워
 




출판사 : 한빛미디어 , 저자 : 김윤명 님의 뇌를 자극하는 Java프로그래밍에서 공부한 내용입니다. 

'JAVA' 카테고리의 다른 글

JAVA] 10. 반복문  (0) 2011.05.31
JAVA] 9. 조건문  (0) 2011.05.31
JAVA] 7. 여러가지 대입문  (1) 2011.05.26
JAVA] 6. 로컬 변수의 선언과 이용  (0) 2011.05.25
JAVA] 5. 간단한 조건문과 반복문  (0) 2011.05.25
posted by 젊은쎄오
: