배열
배열은 인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조이다. 같은 타입, 같은 의미를 지닌 자료들이라면 개별적인 변수로 저장하기보다 배열로 저장하는 것이 효율적이다. 또한 반복문으로 배열을 탐색할 수 있다는 장점이 있다.
double [] doubleArray와 같이 배열을 선언하고 new double[5]와 같이 공간을 할당한다. 이때, 공간은 힙 영역에 생성된다. 배열 이름은 배열이 할당된 공간을 가리키는 포인터라고 생각할 수 있다.
new로 공간을 할당하는 것 대신, int [] intArray = {1, 2, 3, 4, 5};와 같이 초기값을 설정하여 배열을 생성할 수 있다.
배열의 인덱스는 0부터 시작한다. 크기가 n인 배열을 생성한다면 [0]...[n-1] 인덱스에 접근 가능하다. 인덱싱을 이용해 배열에 접근하기 위해서는 먼저 배열 공간을 할당해야 한다.
intArray라는 배열을 생성한 후 int [] myArray = intArray;로 치환할 경우 두 레퍼런스가 하나의 주소를 가리키게 된다. intArray에 할당된 공간을 myArray도 동일하게 접근 가능한 것이다. 이후 intArray에 새롭게 공간을 할당할 수도 있다.

String [] names = {"", "", "", ...}
for(String s : names) {
System.out.prints(s + " ");
}
for문 안에 (배열의 원소 타입 변수 : 배열)을 입력하여 enumerate를 순회할 수 있다. 따로 인덱스 변수 i 제어하지 않아도 돼서 유용하다. 반대로 i값을 알아야 하는 경우는 일반 for문을 사용한다.

2차원 배열에는 행과 열이 있다. int [][] intArray = new int[2][5];와 같이 2차원 배열을 선언 및 할당할 수 있고, 위 배열은 자료형이 int인 2행 5열 배열이다.
이때 레퍼런스인 intArray의 length는 행의 개수인 2가 되고, 각 행을 가리키는 intArray[i].length의 length는 열의 개수인 5가 된다.

비정방형 배열은 정방형 배열과 달리 각 행의 열의 개수가 다른 배열을 말한다. 행마다 따로 1차원 배열 공간을 할당해주어야 한다.

new int[c]로 공간을 할당한다.메소드 호출의 경우) 배열 변수는 레퍼런스(주소)를 저장하므로 메소드에 배열 이름만 전달하면 된다. 메소드에서 배열을 수정하면 원본 배열에 반영된다.
메소드에서 리턴하는 경우) 배열은 heap 영역에 생성되어 메소드 종료 후에도 값이 사라지지 않는다. 따라서 배열 변수를 리턴할 수 있다. 이때 리턴 타입을 맞춰주어야 한다. 참고로, 메소드에서 일반 변수는 스택에 생성된다.

문자열

ArrayList는 크기가 정해지지 않은 배열이다.

ar.get(i)=15;와 같이 대입하면 오류가 발생한다.