Array 만들기#1
타입[] 변수명;
타입 변수명[]
reference 타입
배열의 생성과 초기화
생성
new keyword와 함께 저장하려는 데이터 타입 및 크기 지정
new data_type[length]
new int[3]; // int 타입의 자료 3개를 저장할 수 있는 배열을 메모리에 생성
points = new int[3]; // 생성된 배열을 points라는 변수에 할당
// points는 메모리에 있는 배열을 가리키는 reference 타입 변수
배열 요소의 초기화
- 배열의 생성과 동시에 저장 대상 자료형에 대한 기본값으로 default 초기화 진행
- boolean: false, char: ‘\u0000’(공백문자), byte/short/int: 0, long: 0L, float: 0.0f, double: 0.0, 참조형 변수: null(아무것도 참조하지 않음)
배열의 사용
배열은 index 번호를 가지고 각 요소에 접근 가능
- index 번호는 0부터 시작
- 배열의 길이: 배열이름.length로 배열의 크기 조회 가능
Array 출력을 편리하기
for문을 통한 출력대신 Arrays.toString()
Array 만들기#2
생성과 동시에 할당한 값으로 초기화
int[] b = new int[] {1, 3, 5, 6, 8};
int[] c = {1, 3, 5, 6, 8};
선언과 생성을 따로 처리할 경우 초기화 주의
int[] points; points = {1, 3, 5, 6, 8}; // 컴파일 오류
int[] points; points = new int[] {1, 3, 5, 6, 8}; // 선언할 때는 배열의 크기를 알 수 없을 때
배열의 생성과 메모리 사용 과정
- int[] points = new int[3];
- 배열 선언: int[] points
- 배열 생성: new int[3]; int 타입의 데이터 3개를 담을 수 있는 메모리 공간 확보
- 메모리에 연속된 공간 차지 -> 크기 변경 불가!
- Type에 대한 default 초기화
- 참조 값 할당: points = new int[3]; 배열의 주소를 변수에 할당하여 참조하게 함
- 요소에 할당: points[0]=1; points[1]=’A’;
for-each with Array
- 가독성이 개선된 반복문으로, 배열 및 Collections에서 사용
- index 대신 직접요소(element)에 접근하는 변수를 제공(naturally read only, copied value)
- 사용
int intArray [] = {1, 3, 5, 7, 9}; for(int x: intArray){ System.out.println(x); }
Array is Immutable
- 배열은 최초 메모리 할당 이후 변경할 수 없음
- 개별 요소는 다른 값으로 변경이 가능하나, 요소를 추가하거나 삭제할 수는 없음
더이상 참조하지 않는 메모리 : garbage, GC가 청소함
api 제공하는 배열 복사 method
System.arrayCopy
Arrays.copyOf
2차원 Array 만들기
int Type 기준으로 4x3 배열(Array) 만들기
- 선언
int[][] intArray; int intArray[][]; int[] intArray[]; - 생성
intArray = new int[4][3]; - 할당
intArray[0][2] = 3;
int Type 기준으로 4x3 배열(Array)과 값을 동시에 만들기
- 선언, 생성, 할당 동시에
int[][] intArray = { {0, 1, 2}, {0, 1, 2}, {0, 1, 2} };
int Type 기준으로 4x? 배열(Array) 만들기
- 1,2차 선언/ 1차 생성
int[][] intArray = new int[4][]; - 1차 Array만 생성 후, 필요에 따라 2차 배열을 생성함
intArray[0] = new int[3]; intArray[1] = new int[2]; intArray[2] = new int[] {1, 2, 3};