[JAVA] 배열

여러개의 데이터를 하나의 이름으로 저장하여 편리하게 사용하기 위해 배열을 사용한다.

  • C/C++과의 차이점

    C/C++와는 달리 항상 동적으로 할당 → 동적 할당이기 때문에 heap에 할당

    별도의 반환이 필요없이 제거되거나 재할당되면 GC에서 알아서 반환

    자동으로 초기화 (0, 0.0, null, false)

1차원 Array

java에서는 배열은 객체이기 때문에 new 연산자를 사용하여 객체를 생성해 준다.

//1. 배열 선언
int[] arr1;
int arr2[]; // C/C++ 스타일 

//2. 배열 생성 (메모리 할당)
arr1 = new int[5];

//3. 값 할당
for (int i = 0; i < 5; i++)
	arr1[i] = i;


//선언 + 생성
int[] arr3 = new int[5];

//선언 + 생성 + 값 할당
int[] arr4 = {0, 1, 2, 3, 4};
int[] arr5 = new int[]{0, 1, 2, 3, 4};
  • 인덱스를 통해 접근

    배열의 인덱스는 0부터 배열길이-1까지!

      int[] arr = int[10];
      arr[-1] = -1; //error ArrayIndexOutOfBoundsException
      arr[0] = 0;
      //...
      arr[9] = 9;
      arr[10] = 10; //error ArrayIndexOutOfBoundsException
    
  • 자동으로 초기화

    정수형 0 실수형 0.0 논리형 false 객체 null

  • 힙에 메모리 할당한 후, 0번째 주소 스택에 저장

배열의 길이

int len = arr.length; //배열 길이, 반환형 함수 아님 주의!

1차원 배열 복사 (Array Copy)

//소스배열, 시작위치, 목적배열, 시작위치, 복사할 길이
System.arraycopy(src, srcPos, dest, destPos, length);

//소스배열, 길이
dest = Arrays.copyOf(original, newLength);

2차원 Array

행과 열을 이용하여 데이터를 저장, 이용하기 위해 사용 배열의 배열로 처리

//1. 배열 선언
int[][] arr1;
int arr2[][]; // C/C++ 스타일 
int[] arr3[];

//2. 배열 생성 (메모리 할당)
arr1 = new int[5][3];
arr2 = new int[5][];

arr2[0] = new int[1]; //열의 길이를 각각 다르게 생성
arr2[1] = new int[2];
arr2[2] = new int[3];

arr3 = new int[][]; //error! 반드시 첫번째를 채워야함.
arr3 = new int[][3]; //error!

//3. 값 할당
for (int i = 0; i < 5; i++)
		for (int j = 0; j <3; j++)
				arr1[i][j] = j;

//선언 + 생성
int[][] arr4 = new int[5][3];

댓글남기기