JAVA공부기록[생활코딩]

[java] 배열의 개념 및 예제 // 생활코딩입문

ssong2ku 2022. 3. 30. 12:13
728x90

배열(Array) : 연관된 데이터를 모아서 관리위해 사용하는 데이터 타입.

 

-상수의 사용

변수에 상수를 대입하는 것과 변수에 배열을 대입하는 것의 차이.

 

예) 1반

1반  = 프로그램

50명 각각의 학생의 이름 = 상수(=데이터)

반장과 부반장을 뽑았다. = 변수

 

강초당과 백노바라는 상수를 반장과 부반장이라는 변수에 대입.

코드화 시, 실제로는 동작하지 않는 의사코드 이다.

 

반장 = '강초당'; 

부반장 = '백노바';

 

이것의 효용은 분명하다.

교실에 들어온 선생님은 그 반의 반장이 정확하게 누군지 몰라도 반장에게 지시내리기 가능.

반장이 전학을 가서 부반장이 반장이 되었다고 해도 문제 없이 반장에게 지시가능.

이것이 변수와 상수의 관계.

 

-배열의 사용

수많은 데이터들 중 연관되어있는 것들만 그룹핑해서 효과적으로 관리.

 

예) 여러개의 반 중 1반만 부를 때

코드화

 

1반 = {'강초당', '백노바', ...., '송몽숙'}

1반은 변수고, 강초당, 백노바, 송몽숙 외 47명의 학생은 이 변수에 소속된 상수(=데이터)가 됨.

 

·배열의 생성

String[] classGroup에서 classGroup은 배열이 담길 변수의 이름.

String[]은 classGroup에 담을 배열에 담길 데이터의 타입이 문자열의 배열이라는 의미.

배열을 선언할 때는 데이터 타입 뒤에 []를 붙여야 함.

[]가 없다면 classGroup는 배열이 아니라 문자열 데이터 타입을 갖는 변수가 됨.

배열에 소속될 데이터들은 중괄호 안에 위치하며, 각각의 데이터들은 쉼표로 구분

 

·배열의 제어

배열에 담겨있는 데이터를 꺼내오는 법

컴퓨터는 카운트할 때, 0부터 시작 // 인덱스는 특정한 정보를 빠르게 찾을 수 있도록 도움 //각각의 데이터들을 원소라고 함

 

.length는 배열에 실제 담긴 데이터의 숫자를 의미X, 배열을 처음 생성할 때 지정한 배열의 크기를 의미한다는 점을 주의 ->  배열에 담겨있는 최대 원소의 갯수를 알아옴.

배열에 담긴 각각의 데이터를 원소(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의 배열과 같이 유연하게 배열을 사용가능

728x90