본문 바로가기

Programming

배열 선언, 복사

반응형

 자바에서의 배열 선언은 C와는 조금 다르다. C에서는

int num[10];
int num2[]={1,2,3};


이런식으로 하였다면 자바는

int[] num = new int[10];
int[] num2 = new int[]{1,2,3};
int[] num3 = {1,2,3};


이렇게 3가지 방법이 있다. 2,3 번째는 초기화를 같이 해주는 것이다.

자바와 C의 배열의 다른점은 자바에서는 배열을 만들고 메모리를 할당해 줘야 한다는건데
int, float등 기본 데이터형은 자동으로 메모리가 할당되지만 객체인 경우는 그렇지 않다. 그래서 직접 할당을 해줘야 한다. 안그러면 NULL값이 있게 된다.

Person[] yoon = new Peson[10];

이렇게 한다고 배열에 메모리가 할당되지 않는다. 값을 출력해보면 NULL 값이 나올것이다.

yoon[0] = new Person();
yoon[1] = new Person("26");
yoon[2] = new Person("초보프로그래머","26");


이런식의 새로운 메모리 할당이 필요하다. 그럼 배열의 각값이 객체가 되는것이다. 중요한것은 기본데이터형은 이렇게 따로 해줄 필요가 없다는것이다. 기본데이터형은 선언하고 그냥 쓰면된다.

배열을 복사하는 방법에는 2가지가 있다. arraycopy()와 clone()메소드를 사용하는 것이다.

  • public static void arraycopy(Object src, int src_position, Object dst, int dst_position, int length)
    src : 원본 배열
    src_position : 원본 배열의 시작 위치
    dst :  복사할 배열
    dst_position :  복사할 배열의 시작 위치
    length : 복사할 개수
  • int[] target = (int[])num.clone();
    clone()는 array객체의 메소드이다.
    clone()는 object를 리턴하므로 꼭 다운캐스팅을 해줘야한다. (int[])를 해주므로써 원래 데이터형으로 들어가게 한다.

이게 배열 선언, 복사에 관한 짧은 내용입니다.


반응형