동일한 자료형의 변수를 한꺼번에 순차적으로 관리할 수 있다.
배열의 개수를 적어야 한다.
초기값을 넣지 않고 선언하면 int는 0, double은 0.0으로 초기화되어있다.
int[] arr = new int[10];
int arr[] = new int[10];
초기화할 때는 배열의 개수를 적지 않는다.
int[] arr = new int[] {0, 1, 2};
int[] arr = {0, 1, 2}; // new int[]를 생략할 수 있음
객체 배열은 참조 자료형(주소)를 선언한다.
배열만 생성했을 때 null로 초기화되고, 객체를 new로 생성하여 저장해야 한다.
Book[] library = new Book[5];
library[0]는 array.Book@311d617d라는 주소값을 갖게 되고
출력하려면 library.showBookInfo();
기존 배열과 같은 배열을 만들거나, 더 큰 배열을 만들 때 기존 배열 자료를 복사할 수 있다.
System.arraycopy(복사할 배열, 복사할 첫 위치, 대상 배열, 붙여넣을 첫 위치, 복사할 요소 개수)
앝은 복사: 배열 요소의 주소를 복사하므로 값이 같이 바뀐다.
깊은 복사: 서로 다른 인스턴스 메모리 요소를 갖는다.
for(int num: arr) {
System.out.println(num);
}
2차원 이상의 배열 (지도, 평면, 공간 등)
int[][] arr = new int[행][열];
int[][] arr = {{1, 2, 3}, {4, 5, 6}};
arr.length // 행의 개수
arr[0].length // 1행의 열 개수
arr[1].length // 2행의 열 개수
기존 배열은 길이를 정해서 선언하므로 부족한 경우 다시 만들어야 하는 불편함이 있다.
중간 요소가 삭제되면 나머지를 조정하는 코드를 작성해야 했다.
➡️ 자바에서 제공되는 객체 배열이 구현된 클래스이다.
ArrayList<타입> list = new ArrayList<타입>();
길이 = size()
추가 = add("")
인덱스 = get(n)
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
for (int i=0; i<list.size(); i++) {
System.out.println(list.get(i));
}