배열1 : 정수형 배열 선언, 인덱스 연산자, 배열 길이, 문자 자료형 배열 선언
1. 배열
- 자료형이 같은 자료 여러 개를 한 번에 관리
- 자료가 연속으로 나열된 자료 구조
2. 배열 선언
배열 선언 : 배열을 사용하기 위해 먼저 수행할 것
• 자료형[] 배열명 = new 자료형[개수];
1) 저장하려는 자료의 성격에 맞게 자료형을 정한다.
2) 선언하려는 배열 요소 개수만큼 [] 안에 적는다.
* new예약어 : 배열을 새로 만들라는 의미
Q. 10명의 학생들의 학번을 배열로 선언하고자 한다면?
int[] StudentsIDs = new int[10];
👉10개의 공간(=길이) 형성
* 자바에서 배열 길이는, 처음에 선언한 배열의 "전체 요소 개수"를 의미
👉 int형이므로, 한 공간 당 4바이트 => 총 40바이트 메모리 할당
3. 배열 초기화하기
- 배열을 선언함과 동시에 각 요소의 값은 초기화된다.
- 배열의 자료형에 따라 정수는0, 실수는 0.0, 객체 배열은 null로 초기화된다.
- 배열 선언과 동시에 특정 값으로 초기화 할 수 있다. => 배열이 초기화 요소의 개수만큼 생성되므로, [] 안의 개수는 생략한다.
1) 개수 생략
int[] studentIds = new int[] {101, 102, 103}
2) new int[] 생략
int[] studentIDs = {101, 102, 103};
* 단, 배열의 자료형을 먼저 선언하고 초기화하는 경우에는 new int [] 생략 불가
int [] studentIDs;
studentIDs = new int[] {101, 102, 103}
4. 배열 사용하기
1) 인덱스 연산자 []
- 기능 : 배열 요소가 저장된 메모리 위치를 찾아주는 역할
- 요소의 위치를 찾아 해당 위치의 메모리에 값을 넣거나, 이미 저장되어 있는 값을 가져와서 사용 가능
ex )
studentIDs[0] = 10; //해당 위치의 메모리에 값 넣기
👉배열의 "첫 번째" 요소에 값 10을 저장
age = studentIDs[3]; //이미 저장되어 있는 값을 가져오기
👉age 변수에 studentIds의 "4 번째" 요소 값을 저장
[실습 1. 배열 선언과 초기화까지 한 후 배열의 네 번째 위치 출력]
[실습 2. 배열 선언과 초기화까지 한 후 for문을 이용해 배열의 전체 길이만큼 수행문 출력]
자바에서 배열 길이는, 처음에 선언한 배열의 "전체 요소 개수"를 의미한다.
전체 길이를 알고 싶은 배열 이름 뒤에, 도트(.) 연산자를 붙이고 Length속성을 쓰면 배열 길이를 반환한다.
for문의 조건에서 배열 요소 끝까지 반복하기 위해 배열 전체 길이(length)를 넣는다.
배열 전체 길이만큼 수행문을 반복해야 할 때는 숫자를 직접 사용하는 것보다 length 속성을 사용하는 것이 좋다.
4-1. 전체 배열 길이와 유효한 요소 값
- 처음 선언한 배열 길이만큼 값을 저장해서 사용하는 경우는 많지 않다.
- 즉, 전체 배열 길이와 / 현재 배열에 유효한 값이 저장되어 있는 배열 요소 개수는 다르다.
1) 배열 길이만큼 출력하기
- double형으로 길이가 5인 배열을 선언한다.
- 자바에서 정수 배열과 실수 배열을 초기화하지 않고 선언했을 때, 배열의 요소 값은 0으로 출력된다.
- 배열의 첫 번째 요소부터 세 번째 요소까지 값을 대입하고, for문으로
2) 배열의 유효한 요소 값 출력하기
1) double형으로 길이가 5인 배열을 선언한다.
2) 유효한 값이 저장된 배열 요소 '개수'를 저장할 size 변수를 선언한다.
3) 배열 요소에 순서대로 값을 저장할 때마다 size변수의 값을 증가시킨다. 즉, 유효한 값을 저장하고 있는 배열 요소 개수를 알 수 있다.
4) 따라서, 반복문은 전체 배열 길이만큼 반복하는 게 아니라 유효한 요소 개수만큼만 반복한다.
4-2. 문자 저장 배열 만들기
- 문자 자료형 배열 선언 : char[]
[선행개념]
1) 문자 자료형 배열 선언 : 대문자 알파벳 26개의 공간을 만든다.
2) 요소 값을 대문자 알파벳으로 출력하기 위해 ch 변수를 아스키코드 대문자 알파벳 처음 값인 'A'로 초기화한다.
3) for문을 사용해 각 배열 요소 위치에 알파벳 문자를 저장한다.
각 알파벳 문자는 실제 메모리에 아스키코드 값으로 저장되기 때문에 ch값에 1을 더하면(ch++) 1만큼 증가한 '값'이 배열에 저장된다.
4) alphabets 배열에 저장된 알파벳 문자와, 그 문자에 해당하는 아스키 코드 값을 반복해서 출력한다.
이 때, 아스키코드 값은 정수형으로 표현하고자 char형 문자를 int형 전수로 형 변환 한다.