배열의 길이와 인덱스
배열의 길이 : 배열의 저장공간 크기 (배열의 요소 개수, 즉 값을 저장할 수 있는 공간의 칸 개수이다)
: 배열의 길이(최대값 약 20억 ; int타입) 제한은 거의 없다고 볼 수 있으며, 길이가 0인 배열도 생성 가능
배열의 요소 : 생성된 배열의 저장공간
배열의 장점 : Index로 상수 대신 변수나 수식도 사용 가능 (여러개의 배열 index 수식을 for문으로 간단히 할 수 있다)
배열을 다룰 때 주의사항 : index의 범위를 벗어난 값을 index로 사용하면 컴파일 오류는 없으나 실행시 에러 발생 (ArrayIndexOutOfBoundsException 오류 발생)
다음의 예시는 index로 상수 대신 변수 i 를 사용하여
for문으로 제어변수 i 값을 0부터 4까지 증가시키고 있다
score[0] = 0 ;
score[1] = 10 ; for (int i = 0 ; i < 5 ; i++) {
score[2] = 20 ; = score [i] = i * 10 ;
score[3] = 30 ;
score[4] = 40 ;
인덱스(Index) : 배열의 요소마다 붙여진 일련번호 (저장공간을 구별하는데 사용됨)
인덱스의 범위 : 0부터 '배열길이 -1'까지 (1이 아닌 0부터 시작하기 때문에 범위에 -1을 적용)
score[3] = 100; // 배열 score의 4번째 요소(저장공간)에 100값을 저장한다
int value = score[3]; // 배열 score의 4번째 요소에 저장된 값을 읽어서 value에 저장
위의 코드에 대한 과정을 그림으로 살펴보자
배열이름 . length (배열 길이 값 = 배열이름 .length)
int[] arr = new int [5] // 길이가 5인 int 배열
int tmp = arr.length; // arr.length의 값은 5이고 tmp에 5가 저장된다
int[] arr = new int [6] // 배열의 길이를 5에서 6으로 변경
for(int i = 0; i < score.length; i++) { // 변경된 길이와 동일하게 score.length의 길이도 6이 된다
System.out.println(score[i]); // 조건식을 변경하지 않아도 된다
→ '배열이름.length'는 배열의 길이가 변경되면 함께 자동적으로 변경되기 때문에 배열과 함께 사용되는 for문의
조건식을 일일이 변경해주지 않아도 된다
배열의 초기화
배열은 생성과 동시에 기본값 0 으로 초기화 되므로 배열 사용 전 따로 초기화를 해주지 않아도 된다.
하지만 원하는 값을 저장하려면 아래와 같이 각 요소마다 값을 지정해 줘야한다.
int[] score = new int[5]; // 길이가 5인 int형 배열을 생성한다
score[0] = 50; // 각 요소(저장공간)에 직접 값을 저장한다
score[1] = 60;
score[2] = 70; for(int o = 0; i < score.length; i++)
score[3] = 80; score[i] = i * 10 + 50;
score[4] = 90; // 길이가 큰 경우 요소 하나하나에 값을 지정하기보다 for문을 사용하자
int[] score - new int [] {50, 60, 70, 80, 90); // 배열의 생성과 초기화를 동시에 한다
int[] score = {50, 60, 70, 80, 90}; // 괄호{} 안에 값의 개수에 의해 배열의 길이가 자동 결정되므로 괄호[] 안에 배열의 길이는 적지 않아도 된다
// new int[]를 생략할 수 있음
int[] score; // 배열의 선언과 생성을 따로 하는 경우에는 생략이 불가함
score = {50, 60, 70, 80, 90}; // 에러. new int를 생략할 수 없음
int[] score = new int[0]; // 길이가 0인 배열
int[] score = new int [] {}; // 길이가 0인 배열
int[] score = {}; // 길이가 0인 배열, new int가 생략됨
배열의 출력
배열에 저장된 값을 확인할 때도 배열을 초기화할 때와 같이 for문을 사용하면 된다
int[] iArr = {100, 95, 80, 70, 60,}; // 마지막 요소 60 뒤에 컴마,가 붙어도 틀린게 아님
for (int i = 0; i< iArr.length; i++) { // 배열의 요소(저장공간)를 순서대로 하나씩 출력
System.out.println(iArr[i]);
int[] iArr = {100, 95, 80, 70, 60}; // Arrays.toString(배열이름) 메서드를 이용한 출력
System.out.println(Arrays.toString(iArr)); // 배열 iArr의 모든 요소를 출력한다
// [100, 95, 80, 70 , 60]이 출력된다
System.out.println(iArr); // 배열을 가리키는 참조변수 iArr의 값을 출력한다
// [I@14318bb와 같은 형식의 문자열이 출력된다
char[] chArr = {'a', 'b', 'c', 'd'}; // 예외적으로 charr 배열을 println 메서드로 출력할 때만 각 요소가 구분자 없이 그대로 출력된다
System.out.println(chArr); // 콤마,를 제외한 abcd가 출력된다
// 다른 배열과 달리 chat배열은 for문을 사용하지 않고도 print()나 println()으로 배열에 저장된 모든 문자 출력 가능
배열의 복사
'Java' 카테고리의 다른 글
[IT국비지원교육_코딩_비전공자] for 문으로 배열 출력/ 스택구조와 JVM에 대한 이해 (0) | 2022.01.17 |
---|---|
[IT국비지원교육_코딩_비전공자] 배열의 활용 + 객체지향언어의 특징 (0) | 2022.01.14 |
[IT국비지원교육_코딩_비전공자] 배열의 특징/ 배열의 선언과 생성 (0) | 2022.01.06 |
[IT국비지원교육_코딩_비전공자] 조건문 / if문 / if-else문 / 중첩 if문 / switch문 (0) | 2022.01.05 |
[IT국비지원교육_코딩_비전공자] 증감 연산자/ Math.round( ) & 나머지 연산/ 비교 연산자 / 논리 연산자 / 조건 연산자 (0) | 2022.01.04 |