'array'에 해당되는 글 2건

  1. 2009.03.24 배열 선언, 복사
  2. 2009.03.05 배열 선언
Programming/JAVA2009.03.24 15:35

 자바에서의 배열 선언은 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[])를 해주므로써 원래 데이터형으로 들어가게 한다.

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


신고
Posted by 초프(초보 프로그래머)
Programming/JAVA2009.03.05 02:02
오늘 처음으로 자바로 뭔가를 만들어 봤음;;

만들다가 조금 힘들었던 부분중 하나가 배열 ㅋㅋ

int[] a = new int[10];

a라는 이름으로 크기가 10인 배열을 선언하는 문장이다.

다른 타입도 똑같이 해주면 된다.

이건 금방 찾아서 했는데... 문제는 객체 배열이었다..

객체도 위와 같은 방법으로

student[] std = new student[10];

이렇게 하면 컴파일시 아무 문제도 없다.

하지만... 사용할때 std[1].name = "ABC"; 이렇게 할경우에도 컴파일시 아무 문제가 없다.

실행하면... 오류가 뜬다.. NULL 어쩌고 저쩌고 하는건데...

이것 때문에 엄청 헤맸다;; 결론은 std에 student 공간만 10개 만들었지.. 메모리(?)가 할당안된거 같다

해결방법은 사용전에

for(i=0;i<10;i++)
{
     std[i] = new student();
}


이렇게 하나씩 다 해줘야 한다;
신고
Posted by 초프(초보 프로그래머)