그전까지는 하나의 변수에 하나의 값만 넣어줄 수 있었는데
이제는 배열을 이용하여 변수 하나에 인덱스 넘버를 활용하여 여러개의 값을 넣을 수 있다.
배열 선언하는방법
int[] 배열이름 = new int[배열 크기];
의 방법으로 선언하면 된다.
예를 들어 box라는 배열 이름으로 5개의 정수형값을 넣을 수 있는 배열을 만든다고 하면
int[] box = new int[5];
라고 선언해주면 된다.
여기서 중요한 점은 배열 안의 정수형 데이터들의 위치를 표시할 때 인덱스 넘버로 표시를 해주는데 1부터 시작이 아닌 0부터 시작한다는 점이다.
따라서 위의 배열은 인덱스넘버 0부터4 까지 총 5개의 자리가 있다.
선언과 동시에 배열에 값을 넣어주는 방법도 있는데
int[] box={1,2,3,4,5};
이렇게 하면 box라는 배열을 선언하면서 안에 값을 넣어줄 수 있다 괄호 안에 5개의 값이 있으므로 자동으로 배열의 크기는 5가 된다.
하지만 무조건 배열 선언과 동시에 해야한다.
int[] box;
box={1,2,3,4,5};
로 하게 되면 오류가 난다.
배열을 불러오는 방법은 위 배열에 차례로 1부터 5의 숫자가 들어있다고 생각한다면
box[2]는 인덱스 넘버 2번 이므로 3번째에 들어있는 정수형 데이터값이 될것이다.
정수형 데이터값 5를 출력하고 싶다면 4번 인덱스를 꺼내오면 되므로
System.out.println(box[4]);
을 통해 4번 인덱스의 데이터값 5를 출력할 수 있다.
배열의 크기만 받아오고싶을 때는 배열이름.length (ex box.length )
를 통하여 배열의 크기만 받아올 수 있다.
다음은 정수형 데이터 값을 0부터 차례로 배열안에 집어넣고 출력을 해주는 프로그램이다.
앨리어싱은 기존의 배열의 주소를 다른 배열의 주소로 통째로 넘기는 것이다.
중요한 점은 배열의 주소를 넘기는 개념이라
기존 배열의 안에 있는 데이터 값을 변경하면 다른 배열의 데이터 값도 똑같이 변경된다.
int[] arr1={1,2,3,4,5};
int [] arr2=arr1;
처럼 앨리어싱을 하고
arr[0]=100;
으로 첫번째 데이터 값을 변경시켜주면
arr2[0] 역시 자동으로 100으로 변경된다.
앨리어싱 말고 그냥 데이터 값만 복사를 시켜주고 싶으면
배열이름.clone(); 메소드를 이용하면 된다.
int[] arr2=arr1.clone();
으로 복사를 하면 배열의 주소를 넘기는 것이 아닌 데이터의 값만 복사를 하는개념이다.
따라서 arr1의 값을 변경해도 arr2의 값은 그대로 이다.
배열 자체의 값만 중점으로 값을 넘기고싶으면 for each문을 사용하면 편리하다
for문과 흡사하지만 문법구조는 확연히 다른데
foreach문은
for( 자료형 변수 : 배열이름){
실행부분
}
으로 구성된다
for( int i : intArray){
System.out.println(i);
}
을 해주면 자동으로 intArray 의 인덱스넘버 0부터 값들이 i로 넘어가게 된다.
다음은 간단한 foreach 문 예제이다.
그동안 배열의 구조는 1차원으로 단순히 나열한 배열이었다.
하지만 2차원으로 배열을 구성할 수 있는데
다중배열을 이용하여 2차원 배열을 구성할 수 있다.
우선 그동안 배웠던 배열은
int [] box={1,2,3,4,5,6};
이고
이것을 구조화 시키면 1 2 3 4 5 6 의 꼴로 자료를 보관하고 있다.
하지만 다중배열
int[][]box=new int[2][3]
으로 구성을 한다면
{{1,2,3},
{4,5,6}} 의 꼴이 되고
box[0]의 자료형은 int[3]이 되고 데이터값은 {1,2,3}이 된다.
1행의 2번째 숫자 2를 불러오고싶다면 box[0][1]로 불러오면 가능하다