배열
배열의 생성
변수와 다르게 여러개의 데이터를 저장해 그룹핑 하는데 사용하며. Array를 말한다.
public static void main(String[] args) {
String[] classGroup = { "최진혁", "최유빈", "한이람", "이고잉" };
}
// classGroup은 배열이 담길 변수의 이름이다. String[]은 classGroup에 담을 배열에 담길 데이터의 타입이 문자열의 배열이라는 의미다
배열을 선언할때는 대괄호([])를 붙여야하며, 데이터는 중괄화({})에 넣어주며, 쉼표로 데이터들을 구분한다.
배열의 제어
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 배열의 첫번째 데이터는 [0]으로 표시하며, 최진혁이 출력되었다. 1,2,3도 같은 방법으로 차례대로 출력 되었다.
(배열의 첫번째 데이터는 [0]으로 표현한다.)
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);
}
// String[] classGroup = new String[4];에서 [4]는 classGroup의 index(배열내 데이터 갯수)에 맞추어 지정해준다.
.length는 배열에 실제 담긴 데이터의 숫자를 의미하는 것이 아니라 배열을 처음 생성할 때 지정한 배열의 크기를 의미한다는 점을 주의하자.
배열에 담긴 각각의 데이터를 원소(element)라고 한다. classGroup[1]은 최유빈이다. 여기서 숫자 1은 원소 최유빈을 식별하는 식별자이다.
이러한 식별자를 인덱스라고 부른다.
이 식별자는 중복되면 안 되기 때문에 데이터를 입력할 때 자동으로 1씩 증가되면서 만들어진다. 이 배열이 담을 수 있는 원소의 개수를 length라고 한다. 위의 그림에 따르면 classGroup의 길이는 4가 된다. length는 배열에 담긴 원소의 숫자가 아니라 배열을 선언할 때 지정한 배열이 담을 수 있는 값의 크기를 의미한다.
배열의 사용
다음의 내용을 프로그래밍으로 작성한다.
1 1반 학생들을 번호순으로 정렬해서 줄을 세운다.
2 상담받은 학생의 숫자를 기록한다.
3 대기중인 학생과 상담을 한다.
4 상담받은 학생의 수를 1 증가시킨다.
5 총원보다 상담받은 학생의 수가 작다면 3번 절차로 돌아간다.
6 총원과 상담받은 학생의 수가 같다면 상담을 종료하고 업무를 계속한다.
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를 이용하여, i가 1씩 증가할때마다 배열의 데이터를 출력하게 하였다.
for-each
배열의 내용을 탐색할때 for문을 보다 편리하게 사용할수 있다.
public static void main(String[] args) {
String[] members = { "최진혁", "최유빈", "한이람" };
for (String e : members) {
System.out.println(e + "이 상담을 받았습니다");
}
}
// for(String e : members)구문은 배열 members의 값을 변수 e에 담아 전달하고 중괄호 구간 안으로 전달해준다.
반복문의 종료조건이나 조건을 위해 기준값을 증가시키는 등의 반복작업을 내부적으로 감춘것이다.
배열의 오류와 한계
String[] members = { "최진혁", "최유빈", "한이람" };
System.out.println(members[3]);
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at ot_array.ExceptionDemo.main(ExceptionDemo.java:7)
// members 배열의 데이터 갯수(length)는 3개지만.
index는 0부터 시작하므로, 3은 존재하지 않는다(0,1,2)
에러 내용 역시, 존재하지 않는 인덱스를 사용했기에 발생하는 에러이다.
String[] members = new String[3];
members[0] = "최진혁";
members[1] = "최유빈";
members[2] = "한이람";
members[3] = "이고잉";
// String[] members = new String[3];
배열의 데이터의 갯수(length)는 4개 이므로 선언을 [4]로 하여야 한다. 거꾸로 index는 0부터 시작하므로 (0,1,2,3)가 된다
'프로그래밍 > Java (기초)' 카테고리의 다른 글
메소드의 입력과 출력 (0) | 2016.03.18 |
---|---|
메소드(method)의 형식과 활용 (0) | 2016.03.18 |
반복문의 제어(break, continue, 반복문의 중첩) (0) | 2016.03.18 |
반복문(while, for) (0) | 2016.03.18 |
논리 연산자 (and, or, not) (0) | 2016.03.18 |