자바의 정석 기초편 ch5-4,5 배열의 길이, 배열의 초기화
5-4 배열의 길이
배열이름.length - 배열의 길이(int형 상수)
int[] arr = new int[5];
int tmp = arr.length;
배열은 한번 생성하면 그 길이를 바꿀 수 없다.(실행동안)
1. 왜 배열의 크기를 못바꿀까?
메모리 공간이 있다.
int배열 5이니까 4byte X 5 20byte의 메모리 공간이 필요하다.
배열은 연속적이니까 20byte가 연속적인 곳을 찾아야 한다.
근데 공간이 더 필요해서 int[10]으로 늘리면
연속으로 40byte가 필요하다.
이때 처음에 쓰던 20byte 뒤에 20byte가 비었다는 보장이 없다.
그래서 배열의 크기를 못늘리게하고 필요하면 다른 곳으로 옮기는 식으로 한다.
공간을 늘릴 수 없어 새로운 공간을 만들고
기존에 배열의 내용을 복사한다.
for(int i=0; i<sore.length;i++)로 하는 이유는
만약 new int[6]을 new int[5]로 바꾼다면
int i=0;i<5로 바꿔줘야하는데 까먹기가 쉽다.
그래서 배열이름.length를 써준다.
만약 new int[9]로 바꾸고 for문에서는 i를 9까지 안바꿔줬다면
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 9 out of bounds for length 9
at lnterfaceEx.main(lnterfaceEx.java:9)
인덱스의 범위를 벗어났다는 오류가 생길 수 있다.
5-5 배열의 초기화
배열의 초기화: 배열의 각 요소에 처음으로 값을 저장하는 것
배열을 만든 이유는 값을 저장하기 위해서
배열은 기본적으로 자동 초기화된다.
int는 0으로 자동 초기화된다.
배열이 초기화가 안되는건 말이 안됨
그럼 하나씩 다 값을 넣어줘야된다.
배열은 중괄호를 이용해서 초기화하는 방법이 있다.
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};
이렇게 써야 할 때도 있다.(1%정도)
그럴때는 score = new int[] { 50, 60, 70, 80, 90};