본문 바로가기

[2016 - 2019] 학부 정리/Java

[자바복습] 5. 배열과 for-each

[배열]

배열은 == 그룹핑

배열은 연관된 데이터를 모아서 관리하기 위해서 사용하는 데이터 타입이다. 변수가 하나의 데이터를 저장하기 위한 것이라면 배열은 여러 개의 데이터를 저장하기 위한 것이라고 할 수 있다.

 

배열의 정의

1. 선언과 데이터를 한번에

 
public class ArrayDemo01 {
	public static void main(String[] args) {

		String[] ClassGroup = { "홍길동", "김길동", "최길동" };
		//배열 선언시 타입 뒤에[]를 쓴다.
		System.out.println(ClassGroup[0]);
		System.out.println(ClassGroup[1]);
		System.out.println(ClassGroup[2]);
                                //배열에 순서대로 데이터 삽입한다.
	}

}

 

 

 

2. 선언과 데이터를 따로

 public class ArrayDemo01 {
	public static void main(String[] args) {

		String[] ClassGroup = new String[4];

		ClassGroup[0] = "홍길동";
		ClassGroup[1] = "김길동";
		ClassGroup[2] = "최길동";
		ClassGroup[3] = "박길동";
		
		System.out.println(ClassGroup.length); //4
		//.length는 배열에 실제 담긴 데이터의 숫자를 의미하는 것이 아니라 
		//배열을 처음 생성할 때 지정한 배열의 크기를 의미한다는 점을 주의하자.
	}

}

 

 

3. 배열과 반복문

 
public class ArrayLoopDemo {
	public static void main(String[] args) {
		String[] members = { "홍길동", "김길동", "최길동" };

		for (int i = 0; i < members.length; i++) {
			String member = members[i];
			System.out.println(member + "상담을 받았습니다.");
		}
	}
}

 

결과) 
홍길동상담을 받았습니다.
김길동상담을 받았습니다.
최길동상담을 받았습니다.

 

위의 예제에서 주목해야 할 것은 반복문과 배열을 결합한 부분이다. 반복문을 이용해서 배열 members의 내용을 하나씩 꺼낸 후에 상담 결과를 화면에 출력하고 있다. 배열이란 연관된 정보를 하나의 그룹으로 관리하기 위해서 사용하는데 그 정보를 처리 할 때는 반복문을 주로 이용한다. 반복문과 배열은 매우 밀접한 관계에 있다고 할 수 있다.

 

 

4. for-each

배열의 내용을 탐색할 때 for 문을 좀 더 간편하게 사용할 수 있는 방법이 있다.

 
public class ForeachDemo {

	public static void main(String[] args) {
		String[] members = { "최진혁", "최유빈", "한이람" };
		for (String e : members) {
			System.out.println(e + "이 상담을 받았습니다");
		}
	}

}

 

위의 예제는 이전 예제와 정확하게 동일하게 동작한다. 하지만 문법적으로는 간결해졌다. 

for(String e : members)

위의 구문은 배열 members의 값을 변수 e에 담아서 중괄호 구간 안으로 전달해준다. 반복문의 종료조건이나 종료조건을 위해서 기준값을 증가시키는 등의 반복적인 작업을 내부적으로 감춘 것이라고 할 수 있다.

자바 5.0부터 도입된 기능이다. 이클립스에서 오류가 발생한다면 자바의 가장 높은 버전을 변경해주자.

 

 

5. 배열의 한계 ArrayIndexOutOfBoundsException

 
String[] members = { "홍길동", "김길동", "최길동" };
System.out.println(members[3]);  

 

ArrayIndexOutOfBoundsException존재하지 않는 인덱스를 사용하려고 했을 때 발생한다. 배열 members는 인덱스가 2까지 존재하는데 3을 사용했기 때문에 발생한 오류이다.

 

배열은 초기화할 때 그 크기가 정해진다. 그래서 정해진 크기 이상의 값을 넣을 수 없다. JavaScript나 Python, PHP와 같은 언어에 익숙한 사람에게는 의아할 것이다. 후자의 언어들은 배열의 크기를 미리 정의하고 사용하지 않는다. 물론 자바에도 방법이 있다. 자바에는 컬렉션 Collection이라는 기능이 있다. Container라고도 부르는 이 기능을 이용하면 JavaScript의 배열과 같이 유연하게 배열을 사용할 수 있다.