<배열>
• 배열이란?
인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조를 말한다.
배열을 이용하면 한 번에 많은 메모리 공간 할당이 가능하다.
• 배열 선언 및 생성
자바에서 배열의 생성은 다음 두 단계로 이루어진다.
- 배열에 대한 레퍼런스 변수 선언
int intArray []; // int [] intArray;도 가능
char charArray []; // char [] charArray;도 가능
- 배열 생성 - 배열의 저장 공간 할당
intArray = new int[10]; // int intArray = new int[10];도 가능
charArray = new char[20]; // char charArray = new char[20];도 가능
배열의 생성과 선언을 동시에 할 수도 있다.
int intArray[] = new int[5];
잘못된 배열 선언의 예시이다.
int intArray[10] // 컴파일 오류. 배열의 크기를 지정하면 안됨
• 배열 초기화
배열 선언 시 값 초기화를 진행한다.
int intArray[] = {0,1,2,3,4,5,6,7,8,9]; // 초기화된 값의 개수(10)만큼의 배열 생성
• 배열 인덱스와 원소 접근
배열 인덱스는 정수만 가능하다.
시작 원소 : 0
마지막 원소 : (배열 크기 - 1)
int intArray[] = new int[5]; // 원소가 5개인 배열 생성. 인덱스는 0~4까지 가능
intArray[0] = 5; // 원소 0에 5저장
intArray[3] = 6; // 원소 3에 6저장
int n = intArray[3]; // 원소 3의 값을 읽어 n에 저장. n은 6이 됨
다음은 오류가 나타나는 예시이다.
n = intArray[-2]; // 실행 오류. 인덱스로 음수 사용 불가
n = intArray[5]; // 실행 오류. 5는 인덱스 범위(0~4)를 넘었음
또한 반드시 배열을 생성한 후 접근해야 한다.
int intArray[];
intArray[1] = 8; // 오류. 생성되지 않은 배열 사용
• 레퍼런스 치환과 배열 공유
자바에서는 레퍼런스 변수와 배열 공간이 분리되어 있기 때문에, 하나의 배열을 다수의 레퍼런스가 참조하는 것이 가능하다.
• 배열의 크기와 length 필드
배열은 자바에서 객체로 관리한다.
배열 객체 내에 length 필드는 배열의 크기를 나타낸다.
• 배열과 for-each 문
배열이나 나열의 각 원소를 순차적으로 접근하는데 유용한 for 문이다.
for (변수 : 배열레퍼런스) {
.. 반복작업문 ..
}
다음은 배열 n에 들어있는 모든 정수를 더하는 코드를 for-each문으로 작성한 것이다.
int[] num = { 1,2,3,4,5 };
int sum = 0;
for (int k : num) // 반복될 때마다 k는 num[0], num[1], ..., num[4] 값으로 설정
sum += k;
System.out.println("합은" + sum);
<다차원 배열>
• 2차원 배열의 선언과 생성
1차원 배열과 마찬가지로 선언 이후 배열을 생성한다.
배열 선언
int intrray [][]; // int [][] intArray;도 가능
char charArray [][];
double doubleArrray [][];
배열 생성
intArray = new int[2][5]; // int intArray[][] = new int[2][5];도 가능
charArray = new char[5][5]; // 5행 5열의 2차원 배열 생성
doubleArray = new double[5][2]; // 5행 2열의 2차원 배열 생성
배열 초기화
int intArray[][] = { {0,1,2}, {3,4,5}, {6,7,8} }; // 3*3 배열 생성
• 2차원 배열의 모양과 length 필드
2차원 배열의 length
i.length -> 2차원 배열의 행의 개수, 2
i[n].length : n번째 행의 열의 개수
i[0]. length : 0번째 행에 있는 열의 개수, 5
• 정방형 배열과 비정방형 배열
정방형 배열은 각 행의 열의 수가 같다.
비정방형 배열은 각 행의 열의 개수가 다르다.
• 비정방향 배열의 length
i.length -> 2차원 배열의 행의 개수, 4
i[n].length는 n번째 행의 열의 개수
i[0].length -> 0번째 행의 열의 개수, 1
'CS > 객체지향프로그래밍' 카테고리의 다른 글
[객체지향프로그래밍] #6 모듈과 패키지 (0) | 2024.06.09 |
---|---|
[객체지향프로그래밍] #5 상속 (0) | 2024.04.25 |
[객체지향프로그래밍] #4 클래스와 객체 (0) | 2024.04.21 |
[객체지향프로그래밍] #2 자바 기본 프로그래밍(2) (0) | 2024.04.14 |
[객체지향프로그래밍] #1 자바 기본 프로그래밍(1) (0) | 2024.04.12 |