배열(Array) : 연관된 데이터를 모아서 관리위해 사용하는 데이터 타입.
-상수의 사용
변수에 상수를 대입하는 것과 변수에 배열을 대입하는 것의 차이.
예) 1반
1반 = 프로그램
50명 각각의 학생의 이름 = 상수(=데이터)
반장과 부반장을 뽑았다. = 변수
강초당과 백노바라는 상수를 반장과 부반장이라는 변수에 대입.
코드화 시, 실제로는 동작하지 않는 의사코드 이다.
반장 = '강초당';
부반장 = '백노바';
이것의 효용은 분명하다.
교실에 들어온 선생님은 그 반의 반장이 정확하게 누군지 몰라도 반장에게 지시내리기 가능.
반장이 전학을 가서 부반장이 반장이 되었다고 해도 문제 없이 반장에게 지시가능.
이것이 변수와 상수의 관계.
-배열의 사용
수많은 데이터들 중 연관되어있는 것들만 그룹핑해서 효과적으로 관리.
예) 여러개의 반 중 1반만 부를 때
코드화
1반 = {'강초당', '백노바', ...., '송몽숙'}
1반은 변수고, 강초당, 백노바, 송몽숙 외 47명의 학생은 이 변수에 소속된 상수(=데이터)가 됨.
·배열의 생성
String[] classGroup에서 classGroup은 배열이 담길 변수의 이름.
String[]은 classGroup에 담을 배열에 담길 데이터의 타입이 문자열의 배열이라는 의미.
배열을 선언할 때는 데이터 타입 뒤에 []를 붙여야 함.
[]가 없다면 classGroup는 배열이 아니라 문자열 데이터 타입을 갖는 변수가 됨.
배열에 소속될 데이터들은 중괄호 안에 위치하며, 각각의 데이터들은 쉼표로 구분
·배열의 제어
배열에 담겨있는 데이터를 꺼내오는 법
배열에 담긴 각각의 데이터를 원소(element)
classGroup[1]은 강초당.
숫자 [1]은 원소 강초당을 식별하는 식별자(=인덱스).
식별자는 중복되면 X -> 데이터 입력 시 자동으로 1씩 증가되면서 만들어짐.
배열이 담을 수 있는 원소의 개수를 length.
classGroup의 길이는 4
. length는 배열에 담긴 원소의 숫자가 아니라 배열을 선언할 때 지정한 배열이 담을 수 있는 값의 크기.
·배열의 사용
반복문과 배열의 결합
반복문을 이용해서 배열 members의 내용을 하나씩 꺼낸 후에 가입 결과를 화면에 출력.
배열이란 연관된 정보를 하나의 그룹으로 관리하기 위해서 사용하는데 그 정보를 처리 할 때는 반복문을 주로 이용
반복문과 배열은 매우 밀접한 관계
for-each
for(String e : members)
배열 members의 값을 변수 e에 담아서 중괄호 구간 안으로 전달.
반복문의 종료조건이나 반복시행값을 내부적으로 감춘 것.(자바 5.0부터 도입된 기능)
·배열의 오류
String[] members = { "강초당", "백노바", "송몽숙" };
System.out.println(members[3]);
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 -> 존재하지 않는인덱스사용으로발생
at ot_array.ExceptionDemo.main(ExceptionDemo.java:7)
String[] members = new String[3];
members[0] = "강초당";
members[1] = "백노바";
members[2] = "송몽숙";
members[3] = "쏭이";
ArrayIndexOutOfBoundsException 위와 동일한 에러발생
배열을 선언 시, 배열의 크기를 3개의 문자열을 수용할 수 있는 크기로 지정했는데
더 많은 데이터를 추가하려고 하기 때문에 (예외?) 에러 발생
·배열의 한계
배열은 초기화할 때 그 크기가 정해진다. 그래서 정해진 크기 이상의 값을 넣을 수 X.
컬렉션 Collection 또는 Container라고도 부르는 기능 이용 -> JavaScript의 배열과 같이 유연하게 배열을 사용가능
'JAVA공부기록[생활코딩]' 카테고리의 다른 글
[Java]메소드의 개념 정리 및 예제 / 생활코딩입문 (0) | 2022.03.31 |
---|---|
[Java] 반복문 (0) | 2022.03.29 |
[Java]연산자, 비교와 Boolean, 조건문 개념 정리 및 예제//생활코딩입문 (0) | 2022.03.28 |
[Java]왕초보 상수의 데이터 타입, 형변환 생활코딩입문 (0) | 2022.03.26 |
[JAVA] 왕초보 변수와 주석, 세미콜론 생활코딩입문 (0) | 2022.03.25 |