[JAVA] 배열

김주현·2021년 3월 22일
1

Java

목록 보기
5/15

배열

배열(Array)은 연관된 정보를 그룹핑 하는데 사용합니다. 프로그래밍을 하다보면 하나의 변수에 하나의 데이터가 아닌 여러개의 데이터를 담아야할 때가 있습니다. 그러한 경우에 연관된 여러 개의 데이터를 하나의 변수에 담아서 이를 쉽게 관리할 수 있게 도와주는 편리한 기능이 바로 배열입니다.

[예제]

String[] classGroup= { "최진혁","최유빈","황아람","이고잉"};

위에 예제와 같이 뒤에 정의한 배열에 담긴 데이터는 하나같이 문자열이라는 사실을 알 수 있습니다. 그것은 바로 String[]때문입니다. 즉, classGroup에 담긴 배열은 문자열(String) 데이터의 모임([])이라는 의미가 되는 것입니다. 그래서 String[] classGroup이라고 돼 있으면 classGroup이라는 변수에는 문자열 데이터로 구성된 배열이 담긴다는 의미가 됩니다.

배열의 제어

배열에 담긴 데이터를 어떻게 가져오는지 살펴보도록 합시다.

[예제1]

public static void main(String[] args) {
		String[] classGroup= { "최진혁","최유빈","황아람","이고잉"};
		System.out.println(classGroup[0]);
		System.out.println(classGroup[1]);
		System.out.println(classGroup[2]);
		System.out.println(classGroup[3]);
}

위에 예제를 보면 classGroup 변수에 배열을 정의해서 담고, classGroup에 담긴 배열은 문자열로 이뤄진 것임을 String[]을 통해 기술했습니다. 그럼 classGroup에 담긴 값을 가져오고 싶을 때는 어떻게 하면 될까요? 이 경우 변수명인 classGroup을 지정한 후 대괄호 사이에 숫자 0을 입력하면 이 배열의 첫 번째 값인 "이진혁"이라는 값을 가져옵니다.
그래서 이러한 0,1,2,3이라는 값을 영어로는 색인(index)이라고 합니다. 우리가 책을 볼때도 책 맨 뒤편에는 색인이 있습니다. 그래서 색인을 통해 빠르게 원하는 정보를 찾을 수 있게 하는 것이 색인인데, 예제의 배열에서 사용하는 인덱스도 똑같은 역할을 합니다.

[예제2]

public static void main(String[] args) {
		String[] classGroup=new String[4];
		classGroup[0]="최진혁";
		System.out.println(classGroup.length);
		classGroup[1]="최유빈";
		System.out.println(classGroup.length);
		classGroup[2]="한이람";
		System.out.println(classGroup.length);
		classGroup[3]="이고잉";
		System.out.println(classGroup.length);
	}

예제2를 보면 new String은 문자열을 만드는 방법입니다. 다만 문자열 데이터 타입을 만드는 방법이라고만 알 뿐 new라는 것이 무엇인지 아직까진 정확하게 이해하기 어렵습니다. (객체지향지식습득필요) 그러므로 일단은 new를 미지의 영역으로 남겨놓고 배열을 정의할 때 new라는 것을 사용한다고만 생각하면 됩니다. 꼭 배열을 정의할 때만 new를 쓰는 것은 아니지만 새로운 무언가를 만들기 위해서는 앞에 new를 쓴다고 생각하면 됩니다.
그리고 classGroup.length라는 의미는 classGroup 변수에 담긴 배열이 담을 수 있는 원소의 개수를 가져옵니다.
length라는 것이 현재 classGroup변수에 담긴 값을이 몇 개 들어있는지 알려주는 것이 아니고, classGroup변수에 담긴 배열이 몇 개의 값을 수용할 수 있는지 알려주는 값이라는 것입니다.

배열 - 반복문과 배열의 조화

아래의 예제를 보면, members.length라는 값은 members 배열이 담을 수 있는 값의 개수를 나타냅니다. 그럼 members.length의 값은 3이 됩니다.i값이 3보다 작을동안 1씩 증가하면서 for문안의 구문을 반복해서 실행하는 것이 이 코드가 하는 일입니다.

[예제]

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

[출력결과]
최진혁이 상담을 받았습니다.
최유빈이 상담을 받았습니다.
한이람이 상담을 받았습니다.

즉, 반복문은 어떤 일을 반복해서 처리하는 역할을 합니다. 그리고 그 반복문이 처리해야 할 데이터를 일반적으로 배열이라는 그릇에 담아서 반복문에 제공하면 반복문은 그 그릇에 담긴 값을 하나하나 꺼내면서 어떠한 처리를 해준다는 것을 알 수 있습니다.

배열 - for-each

아래의 예제를 보면 members 변수에 배열이 담겨있고, for문이 등장하는 건 똑같은데 이 예제에서는 members 변수를 for 문으로 가져왔습니다.
그리고 콜론(:)뒤에 e변수의 데이터 형식으로 string을 지정하고 있습니다. 이렇게 하면 콜론뒤에 따라오는 members에 담긴 값을 반복문이 동작할 때마다 하나씩 꺼내서 e변수에 담아주도록 약속돼있습니다.

[예제]

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

이렇게하면 실수도 훨씬 적고 훨씬 단순하게 하고자하는 일을 할 수 있게 됩니다.

1개의 댓글

comment-user-thumbnail
2021년 3월 29일

1) c언어에서는 배열 변수의 이름은 첫번째 내용물이 들어있는 주소입니다. 자바에서는 어떨지 고민해보는 것도 좋겠습니다.
2) new는 아마도 변수 선언 시, 새로운 메모리를 생성하는 개념일 듯 한데. 잘 모르겠네요. 추후 자세히 공부해야 할 부분입니다.
3) for-each는 말 그대로 편의기능이라, 이것을 사용하지 않고, 기본 문법으로 전부 구현 해 보는 것이 중요합니다.

답글 달기