배열(Array)

김수민·2023년 3월 8일
0

백엔드 부트캠프

목록 보기
8/52

배열

동일한 타입의 값들을 하나의 묶음으로 묶은 자료 구조.

  • 요소(element): 배열이 가진 각 값들
  • 인덱스(index): 배열의 각 요소가 부여받은 순번 (0부터 시작)

배열의 차원

차원: 배열이 중첩된 정도
배열이 중첩되었다: 배열의 요소가 또 다른 배열인 경우

  • 1차원 배열: 배열이 중첩이 없는 경우 = 배열의 요소가 배열이 아닌 경우
    예. {1, 2, 3, 4}
  • 2차원 배열: 배열이 한 번 중첩된 경우 = 배열의 요소가 배열인 경우
    예. {{1, 2, 3, 4}, {5, 6, 7, 8}}

1차원 배열

가장 일반적인 배열의 형태로, 배열의 요소가 배열이 아닌 배열을 의미.

double[] temperatureOfJuly;
temperatureOfJuly = new double[31];
  • 기본 타입의 값을 변수에 할당하면 해당 변수에는 실제 값이 저장됨
    - int형, double형과 같은 기본 타입의 경우 기본 타입의 값을 저장할 변수를 선언하는 시점에 얼마 만큼의 메모리 공간을 확보해야 하는지 컴퓨터가 알 수 있음
  • 참조 타입의 값을 변수에 할당하면 해당 변수에는 주소값이 저장됨
    - 배열을 선언하는 시점에서 배열이 몇 개의 요소를 가질지 컴퓨터는 알 수 없음
    • 이후에 생성될 배열의 주소값을 담을 메모리 공간만이 확보됨

값 접근하기

배열 내 특정 요소에 할당되어져 있는 값에 접근하려면 배열 참조 변수의 이름과 배열의 인덱스를 활용하면 됨. 배열_참조_변수_이름[인덱스]로 배열의 요소에 접근할 수 있음

배열의 길이

배열이 가진 요소의 개수를 배열의 길이 또는 크기라고 함
배열_참조_변수_이름.length로 얻을 수 있음
인덱스는 0부터 시작하므로 배열의 길이 - 1이 배열 마지막 요소의 인덱스가 됨

2차원 배열

int[][] kcal = new int[31][3];

이 2차월 배열의 내부 배열은 int형의 기본값인 0을 3개씩 저장하고 있으며, 외부 배열은 내부 배열 ({0, 0, 0}) 31개를 저장하고 있음.
내부 배열은 3개의 0을 요소로 가지지만, 외부 배열의 각 요소는 내부 배열의 주소값을 저장하고 있음.

가변 배열

가변 배열: 배열이 2차원 이상일 때, 마지막 차수에 해당하는 배열의 길이를 고정하지 않아도 됨

int[][] ages = new int[5][];

외부 배열의 크기를 5으로 지정했으나, 마지막 차수에 해당하는 내부 배ㅕㅇㄹ에는 크기를 지정하지 않았음.
이처럼 마지막 차수에 해당하는 배ㅕㅇㄹ의 크기를 지정하지 않으면 가변 배열이 생성됨.
이 때 생성된 것은 내부 배열의 크기를 자유롭게 지정할 수 있는 외부 배열임. 즉, 외부 배열만 생성된 상태

배열 탐색

int[] scores = { 100, 90, 85, 95, 100 };

// 일반적인 for문 및 while문을 사용하면 배열 요소의 값을 바꿀 수 있습니다. 
for (int i = 0; i < scores.length; i++) {
	scores[i] = 0;
}
System.out.println("for문 사용      : " + Arrays.toString(scores));

int j = 0;
while (j < scores.length) {
	scores[j++] = 1;
}
System.out.println("while문 사용    : " + Arrays.toString(scores)); 

// 향상된 for문을 사용하면 배열 요소의 값을 바꿀 수 없습니다. 
for (int score: scores) {
	score = 2;
}
System.out.println("향상된 for문 사용 : " + Arrays.toString(scores));

/*
실행 결과

for문 사용      : [0, 0, 0, 0, 0]
while문 사용    : [1, 1, 1, 1, 1]
향상된 for문 사용 : [1, 1, 1, 1, 1]
*/

0개의 댓글