※ 공부 내용의 복습 개념으로 정리된 글입니다. - 출처 시나공
배열의 개념
배열은 동일한 데이터 유형을 여러 개 사용해야 할 경우 이를 손쉽게 처리하기 위해 여러 개의 변수들을 조합해서 하나의 이름으로 정의해 사용하는 것을 말합니다.
- 배열은 하나의 이름으로 여러 기억장소를 가리키기 때문에 배열에서 개별적인 요소들의 위치는 첨자를 이용하여 지정합니다.
- 배열은 변수명 뒤에 대괄호 []를 붙이고 그 안에 사용할 개수를 지정합니다.
- C언어에서 배열의 위치는 0부터 시작됩니다.
- 배열은 행 우선으로 데이터가 기억장소에 할당됩니다.
- C 언어에서 배열 위치를 나타내는 첨자 없이 배열 이름을 사용하면 배열의 첫 번째 요소의 주소를 지정하는 것과 같습니다.
1차원 배열
1차원 배열은 변수들을 일직선상의 개념으로 조합한 배열입니다.
형식
- 자료형 변수명[개수];
- 자료형 : 배열에 저장할 자료의 형을 지정합니다.
- 변수명 : 사용할 배열의 이름으로 사용자가 임의로 지정합니다.
- 개수 : 배열의 크기를 지정하는 것으로 생략할 수 있습니다.
※ int a[5]
배열을 선언할 때는 int a[5]와 같이 5를 입력하여 5개의 요소임을 선언하며 사용할 때는 a[0] ~ a[4]까지 5개의 요소를 사용합니다.
예제
JAVA에서의 배열 처리
JAVA에서는 향상된 for문을 사용할 수 있는데, 향상된 for문은 객체를 대상으로만 가능합니다. JAVA에서는 배열을 객체로 취급하며, 배열을 이용하여 작업할 때 필요할 만한 내용은 이미 API로 만들어 두었기 때문에 잘 골라서 사용하면 됩니다.
배열에 대한 기본은 C언어에서 배웠기 떄문에 바로 예제를 보면서 설명합니다.
예제1
다음은 위의 C 프로그램을 JAVA로 구현한 것입니다. 프로그램의 출력 결과를 확인해 보시오.
public class Example {
public static void main(String[] args) {
① int a[] = new int[5];
② int i;
③ for (i = 0; i < 5; i++)
④ a[i] = i + 10;
⑤ for (i = 0; i < 5; i++)
⑥ System.out.printf("%d ", a[i]);
}
}
코드 해설
① 배열을 선언하는 부분이 조금 다릅니다. 배열은 JAVA에서 객체로 취급되며, 객체 변수는 'new' 명령을 이용하여 생성해야 합니다.
- int a[] : a는 정수 배열 변수라는 의미입니다. JAVA에서는 'int[] a'와 같이 대괄호를 자료형 바로 뒤에 적는 것을 선호하는데, C언어에서는 이렇게 표기할 수 없습니다.
- new int[5] : 5개짜리 정수 배열을 생성합니다.
- C언어처럼 사용하려면 다음과 같이 배열을 선언하면서 초기값을 주면 됩니다.
int a[] = {0, 0, 0, 0, 0};
② ~ ⑤ C 프로그램과 동일합니다.
⑥ 결과 : 10 11 12 13 14
예제2
다음은 JAVA에서 향상된 for문을 사용한 예제입니다. 결과를 확인하세요.
public class Example {
public static void main(String[] args) {
① int[] a = {90, 100, 80, 70, 60, 50, 30};
② int hap = 0;
③ float avg;
④ for (int i : a)
⑤ hap = hap + i;
⑥ avg = (float)hap / a.length;
⑦ System.out.printf("%d, %.2f", hap, avg);
}
}
코드 해설
① 배열을 선언하면서 초기값을 지정합니다. 개수를 정하지 않으면 초기값으로 지정된 수만큼 배열의 요소가 만들어 집니다. 이건 C언어와 같습니다.
② 총점을 구하기 위해 정수형 변수 hap을 선언하고 초기값으로 0을 할당합니다.
③ 평균을 구하기 위해 실수형 변수 avg를 선언합니다.
④ 향상된 반복문입니다. a 배열의 요소 수만큼 ⑤ 번을 반복 수행합니다.
- int i : a 배열의 각 요소가 일시적으로 저장될 변수를 선업합니다. a배열과 형이 같아야 합니다. a배열이 정수면 정수, 문자면 문자여야 합니다.
- a : 배열의 이름을 입력합니다. a 배열이 7개의 요소를 가지므로 각 요소를 i에 저장하면서 ⑤ 번을 7번 수행합니다.
⑤ i의 값을 hap에 누적합니다. i는 a 배열 각 요소의 값을 차례로 받습니다.
변수의 변화는 다음과 가습니다.
이런 방식으로 a 배열의 요소 수만큼 반복합니다.
⑥ 총점이 저장되어 있는 hap을 실수형으로 변환한 후 a배열의 요소 수로 나눠 평균을 구합니다.
- length : 클래스에는 클래스의 속성과 수행해야 할 메소드가 포함되어 있습니다. length는 배열 클래스의 속성으로 배열 요소의 개수가 저장되어 있습니다. a 배열은 7개의 요소를 가지므로 a.length는 7을 가지고 있습니다.
- a.length : 개체 변수의 이름과 속성은 .(마침표)로 연결하여 사용합니다.
⑦ 결과 : 480, 68.57
※ 객체 변수
객체 변수, 정확히 말하면 heep 영역에 객체를 생성하고 생성된 객체가 있는 곳의 주소를 객체 변수에 저장하는 것입니다.
JAVA에서는 주소를 제어할 수 없으므로 그냥 객체 변수를 생성한다고 이해해도 됩니다.
2차원 배열
2차원 배열은 변수들을 평면, 즉 행과 열로 조합한 배열입니다.
형식
- 자료형 변수명[행개수][열개수]
- 자료형 : 배열에 저장할 자료의 형을 지정합니다.
- 변수명 : 사용할 배열의 이름으로 사용자가 임의로 지정합니다.
- 행개수 : 배열의 행 크기를 지정합니다.
- 열개수 : 배열의 열 크기를 지정합니다.
예제 : 3행 4열의 배열에 다음과 같이 숫자 저장하기
배열의 초기화
- 배열 선언 시 초기값을 지정할 수 있습니다.
- 배열을 선언할 때 배열의 크기를 생략하는 경우에는 반드시 초기값을 지정해야 초기값을 지정한 개수 만큼의 배열이 선언됩니다.
- 배열의 개수보다 적은 수로 배열을 초기화하면 입력된 값만큼 지정한 숫자가 입력되고, 나머지 요소에는 0이 입력됩니다.
예제 : 2차원 배열에 다음과 같이 초기화 한 후 a[0][0]과 a[1][1]의 값 출력하기.
배열 형태의 문자열 변수
- C언어에서는 큰따옴표("")로 묶인 글자는 글자 수에 관계없이 문자열로 처리됩니다.
- C언어에는 문자열을 저장하는 자료형이 없기 때문에 배열, 또는 포인터를 이용하여 처리합니다.
- 형식
char 배열이름[크기] = "문자열" - 배열에 문자열을 저장하면 문자열의 끝을 알리기 위한 널 문자('\0')가 문자열 끝에 자동으로 삽입됩니다.
- 배열에 문자열을 저장할 때는 배열 선언 시 초기값으로 지정해야 하며, 이미 선언된 배열에는 문자열을 저장할 수 없습니다.
- 문자열 끝에 자동으로 널 문자('\0')가 삽입되므로, 널 문자까지 고려하여 배열 크기를 지정해야 합니다.
예제 : 다음의 출력 결과를 확인하시오
JAVA의 문자열
C언어에서는 문자열을 배열에 넣고 배열의 이름을 이용하든지 포인터 변수를 이용해 처리했지만 JAVA에서는 주소를 컨트롤하는 기능이 없기 때문에 불가능합니다. 하지만 JAVA에서는 문자열을 처리할 수 있도록 클래스를 제공합니다.
클래스를 제공하므로 당연히 그에 따른 속성과 메소드도 지원하는데 여기서는 문제 풀이에 꼭 필요한 속성과 메소드만 언급하도록 하겠습니다.
예제 : 다음은 문자열을 거꾸로 출력하는 JAVA 프로그램입니다. 결과를 확인하시오.
'정보처리산업기사' 카테고리의 다른 글
정보처리산업기사 - 프로그래밍 언어 활용 - 사용자 정의 함수 (0) | 2024.08.19 |
---|---|
정보처리산업기사 - 프로그래밍 언어 활용 - 포인터 (0) | 2024.08.17 |
정보처리산업기사 - 프로그래밍 언어 활용 - 반복문 (0) | 2024.08.15 |
정보처리산업기사 - 프로그래밍 언어 활용 - 제어문 (0) | 2024.08.14 |
정보처리산업기사 - 프로그래밍 언어 활용 - 데이터 입 · 출력 (0) | 2024.08.13 |