본문 바로가기
국비학원 전 강의 필사/점프 투 자바

#03-06 배열 (Array) - <점프 투 자바>

by kkooHan 2022. 8. 27.

 

출처 : https://wikidocs.net/book/31

 

 

점프 투 자바

**초보 프로그래머를 위한 자바 입문서** 이 책은 문법위주의 지식보다는 이해중심의 지식을 전달하는 것을 주 목적으로 한다. 예를 들어 자바에서 잘 파악하기 힘든 개념 ...

wikidocs.net

 

 

 

 

 

 

필사 :

 

지금까지 우리는 숫자와 문자열에 대해서 알아보았다.

하지만 이러한 것들로 프로그래밍을 하기엔 부족한 점이 많다.

예를 들어 1부터 10까지의 숫자들 중 홀수들의 모임인

1, 3, 5, 7, 9 라는 집합을 생각해 보자.

이것들을 숫자나 문자열만으로 표현하기는 쉽지가 않다.

 

 

이러한 문제를 해결하기 위해 배열이 있다.

 

 

1부터 10까지의 숫자들 중 홀수들의 집합은 다음과 같이 int 배열로 표현할수 있다.

 

int [] odds = {1, 3, 5, 7, 9};

 

배열은 자료형 타입 바로 옆에 [ ] 기호를 사용하여 표현한다.

위 예제와 같이 int 자료형의 배열은 int [] 로 표현되었다.

 

요일의 집합은 다음과 같이 String 배열로 표현할 수 있다.

String [] weeks = {"월", "화", "수", "목", "금", "토", "일"};

 

즉, 배열이란 자료형의 종류가 아닌 자료형의 집합을 의미한다.

 

위에서 알아본 배열은 모두 1차원 배열이다.

2차원, 3차원 등의 다차원 배열도 가능한데 2차원 이상의 배열은 잘 사용하지 않는다.

 

 1. 배열의 길이는 고정되어 있다.

 2. 배열의 값은 어떻게 접근할 수 있을까?

 3. 배열의 길이

 4. 빈번한 배열의 오류

 

 

1. 배열의 길이는 고정되어 있다.

 

위에서 살펴본 요일의 집합 예제는 다음과 같이 고쳐 쓸 수 있다.

 

String[] weeks = new String [7];

weeks[0] = "월";

weeks[1] = "화";

weeks[2] = "수";

weeks[3] = "목";

weeks[4] = "금";

weeks[5] = "토";

weeks[6] = "일";

 

배열의 길이를 먼저 설정하여 배열 변수를 먼저 생성한 다음 그 값은 나중에 대입하는 방법이다.

단, 위 예처럼 초기값 없이 배열 변수를 만들 때에는 반드시 길이에 대한 숫자값이 필요하다.

즉, 다음과 같은 코드는 불가능하다.

 

String [] weeks = new String[] ;

 // 길이에 대한 숫자값이 없으므로 컴파일 오류가 발생한다.

 

 

 

2. 배열의 값은 어떻게 접근할 수 있을까?

 

위에서 만든 요일의 배열 중 "목"에 해당되는 값을 얻으려면

다음과 같이 인덱싱을 이용해야 한다.

 

String[] weeks = {"월", "화", "수", "목", "금", "토", "일"}

System.out.println(weeks[3];)

 

week[3] 은 weeks 배열의 네번째 항목을 의미한다. (자바는 0부터 숫자를 센다.)

 

 

 

3. 배열의 길이

배열은 보통 for문과 함께 사용된다.

for문에 배열이 사용될 경우 배열의 길이만큼 for문을 돌리는 것이 중요한데

배열의 길이는 다음과 같이 length를 이용하여 구한다.

 

String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};

for (int i = 0; i < weeks.length; i++) {

   System.out.println(weeks[i]);

}

 

weeks 배열을 순서대로 출력하는 프로그램이다.

length를 어떻게 사용했는지 눈여겨 보도록 하자.

 

 

 

4. 빈번한 배열의 오류

아마 여러분이 자바 코드를 작성하면서 보게 될

가장 많은 오류 중의 하나는 바로 다음의 오류일 것이다.

ArrayIndexOutOfBoundsException

 

다음의 예처럼 요일 배열의 길이는 총7개인데

만약 8번째 값을 얻으려고 시도하면 이와 같은 오류가 발생한다.

System.out.println(weeks[7]);

// 8번째 배열값이 없으므로 ArrayIndexOutOfBoundsException 오류가 발생한다.

 

 

 

요 약 : 

 

배열 (Array)


int[] odd = {1, 3, 5, 7, 9};

String[] weeks = {"월", "화", "수", "목", "금", "토", "일"}

-> 자료형 바로 뒤에 '[]' 사용해서 배열을 나타낸다.



String[] weeks = new String [7]
weeks[0] = "월"
weeks[1] = "화"
weeks[2] = "수"
weeks[3] = "목"
weeks[4] = "금"
weeks[5] = "토"
weeks[6] = "일"

-> 위와 같이 배열을 표현하기도 한다.
  길이를 먼저 설정한 뒤 각각의 값은 나중에 대입하는 방법.
  반드시 길이를 선언해야 한다.(like 위 예문의 'new String[7]')



week[3] -> 배열의 네번째 항목.(컴퓨터는 0부터 숫자를 셈)



보통 for문과 함께 사용되는데
그 때 배열의 길이만큼 for문을 돌리기 위해
length를 이용한다.
-> for (int i=0; i < weeks.length; i++)



ArrayIndexOutOfBoundsException 에러
-> 없는 배열의 값을 얻으려 할 때 나타나는 에러.



댓글