프로그래밍을 공부하면서 계속해서 만나게 되는 개념들이다. 둘이 혼용되어서 사용된 것을 본적이 있는데, 이해하지못했고, 차이점을 정확하게 모르다보니, 매번 쓰던 것들 위주로만 사용했다.
정리해서 잘써보자
int [] arr = new int [2];
해당 배열에 값을 하나씩 채워 넣어 볼 것인데
int[] arr = new int[2];
arr[0] = 47;
arr[1] = 23;
arr[2] = 32;
코드 작성 후에 실행하면 인덱스 배열 범위가 벗어났다는 런타임 에러가 발생한다.
이유는 Array 생성시에 크기를 정해야하는데, 크기가 2개인 array를 만들었는데 3개의 값을 넣으려고 했기 때문이다.
위에 만들었던 배열에 "hi"라는 문자를 넣어보자.
int[] arr = new int[2];
arr[0] = 47;
arr[1] = "hi";
컴파일 에러가 난다. 왜냐면 기존 배열시에 int타입의 값만을 받는 배열을 선언했는데, 다른 타입이 들어오려고 하니 발생하는 에러이다.
이러한 array의 약점들을 arraylisty를 사용하면 발생하지 않는다!
ArrayList a1 = list ArrayList();
a1.Add("hello");
a1.Add(2);
a1.Add(10.6);
ArrayList생성방법은 위와 같다. 배열과는 다르게 타입을 지정하는 부분도, 크기를 지정하는 부분도 없다. Array의 한계적인 부분이 없어졌다!
그런데 그럼 왜 이렇게 좋은 ArrayList를 두고 왜 굳이 Array를 사용하는가를 생각해볼 것이다.
다양한 타입을 넣을 수 있다는 것은 박싱, 언박싱을 하고 있다는 것인데! 쉽게 말하면 속도와 성능저하가 발생 된다는 것이다.
만약에 하나의 타입만을 사용하고, 크기가 고정되어 있는 배열이 필요하다면 굳이 ArrayList를 사용해 성능을 떨어뜨릴 필요가 없을 것이다!!