5.7 다차원 배열
: 배열 항목에 또 다른 배열이 대입될 수 있음
1) 값 목록으로 생성
: 배열 변수 선언 시 타입 뒤에 대괄호[ ]를 차원의 수만큼 붙이고, 값목록도 차원의 수만큼 중괄호를 중첩
int[][] scores = { //타입[반][번호] 변수, 타입[1차원][2차원] 변수
{80, 90, 100}, //1차원 배열의 0 인덱스 = 첫번째 반 성적
{30, 40, 50} //1차원 배열의 1 인덱스 = 두번째 반 성적
}
2) new 연산자로 생성
: 배열 변수 선언 시 타입 뒤에 대괄호[ ]를 차원의 수만큼 붙이고, new 타입 뒤에도 차원의 수만큼 대괄호[ ]를 작성
- 마지막 차원의 항목의 값은 초기값 가짐 (0 / 0.0 / false / null)
1. 2차원 배열의 길이가 같은 경우
int[][] scores = new int[2][3];
2. 2차원 배열의 길이가 다른 경우
int[][] scores = new int[2][]; //먼저 1차원 배열의 길이를 2로 해서 생성
scores[0] = new int[3]; //각각의 항목 값으로 길이가 다른 2차원 배열 대입
scores[1] = new int[2];
5.8 객체를 참조하는 배열
- 기본 타입 배열은 각 항목에 값을 직접 저장
- 참조 타입 배열은 각 항목에 객체의 번지를 저장
- 배열 항목이 참조하는 객체가 같은 객체인지 여부 확인 시에는 ==, !=
- 문자열만 비교할 때에는 equals() 메소드 사용
5.9 배열 복사
- 배열은 한 번 생성하면 길이 변경이 불가능하기에, 더 많은 저장 공간 필요 시 더 큰 길이의 배열을 새로 만들고 이전 배열로부터 항목들을 복사
- 복사되지 않은, 배열의 나머지 항목들은 초기값 그대로
1) for문 사용
: 항목 하나씩 읽고 새로운 배열에 저장
int[] arr1 = {1,2,3};
int[] arr2 = new int[5]; //길이
for (int i = 0; i<arr1.length; i++){
arr2[i] = arr1[i];
}
2) arraycopy() 메소드 사용
System.arraycopy(원본배열, 원본배열 복사시작 인덱스, 새 배열, 새 배열 붙여넣기시작 인덱스, 복사항목 수);
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
- 원본 배열이 arr1이고 새 배열이 arr2인 경우 arr1의 모든 항목을 arr2에 복사하려면
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
* 항목의 값이 String 객체의 번지이므로, 번지 복사가 되어 참조하는 String 객체는 변함 없음
(동일한 번지 가리키고 있으니까)
5.10 배열 항목 반복을 위한 향상된 for문
- 배열의 길이 고려하지 않아도 됨
- 카운터 변수와 증감식 사용하지 않고, 항목의 개수만큼 반복 후 for문 나감
int[] scores = {90, 80, 70, 60, 50};
int sum = 0;
for(int temp : scores) {
sum = sum + temp
}
for ( (2)타입 변수 : (1)배열 ) {
(3)실행문
}
* for문 실행 시
(1)배열에서 가져올 항목이 있는 경우 (2)변수에 항목 저장, (3)실행문 실행
(1)배열에서 가져올 다음 항목이 없으면 for문 종료
'언어 > java' 카테고리의 다른 글
[Java] 6. 클래스 (2) - 5~7 (0) | 2025.03.22 |
---|---|
[Java] 6. 클래스 (1) 1~4 (0) | 2025.03.22 |
[Java] 5. 참조 타입 (2) - 5~6 (1) | 2025.03.16 |
[Java] 5. 참조 타입 (1) - 1~4 (0) | 2025.03.16 |