배열의 생성과 초기화
// 선언+생성+초기화 동시에
int[] scores1 = new int[] {100, 90, 80, 70, 60};
// 선언 따로 생성+초기화 따로
int[] scores2;
scores2 = new int[] {100, 90, 80, 70, 60};
- 배열의 선언과 생성을 동시에 하는 경우
new 생성자[]
생략 가능
// 선언+생성+초기화 동시에
int[] scores3 = {100, 90, 80, 70, 60};
길이가 0인 배열
- null 대신 길이가 0인 배열을 사용하면 null 체크 등 복잡한 로직을 생략할 수 있기 때문에 유용하게 사용된다
배열의 복사
- 배열은 for문이나 System.arraycopy()로 복사할 수 있다
- for문으로 배열 복사하기
int[] scores = new int[] {100, 90, 80, 70, 60};
int[] scoresCopy = new int[scores.length];
for (int i = 0; i < scoresCopy.length; i++) {
scoresCopy[i] = scores[i];
}
- System.arraycopy(원본, 복사 시작 인덱스, 대상, 붙여넣기 시작 인덱스, 복사 길이)로 배열 복사하기
int[] scores = new int[] {100, 90, 80, 70, 60};
int[] scoresCopy = new int[scores.length];
System.arraycopy(scores, 0, scoresCopy, 0, scores.length);
- for문은 배열 하나하나에 접근해서 복사하지만, System.arraycopy()는 지정된 범위 값을 한번에 복사한다
- 배열은 연속된 메모리 주소에 저장되어 있기 때문에 가능한 방법
- for문 보다 효율 좋음
가변 배열
- 2차원 이상의 다차원 배열 생성 시, 마지막 차수의 길이를 지정하지 않으면 각각 다른 길이의 배열을 생성할 수 있다
// 마지막 차수 길이 지정
int[][] scores1 = new int[5][3];
/*
{
{1, 2, 3},
{1, 2, 3},
{1, 2, 3},
{1, 2, 3},
{1, 2, 3}
}
*/
// 마지막 차수 길이 미지정
int[][] scores2 = new int[5][];
/*
{
{1, 2},
{1, 2, 3, 4, 5},
{1, 2, 3},
{},
{1}
}
*/