- 배열(Array)
같은 타입의 여러개의 변수를 하나의 묶음으로 다루는 것 메모리 공간
특징
- 같은 타입의 값들만 저장가능
- 기본 데이터 타입과 참조 데이터 타입 모두 저장가능
- 여러 개의 변수에 해당하는 메모리 공간이 연속된 공간에 차례대로 생성됨
- =>한 번 생성된 배열은 크기 변경 불가능
- 배열은 선언, 생성, 초기화 3단계의 과정을 거쳐서 사용
- 배열 생성 시 자동으로 기본값으로 초기화됨
- (int형 기본값 : 0, double형 기본값 : 0.0 boolean 형 기본값 :false 등)
- 배열 생성 시 인덱스 번호가 자동으로 부여되며, 0~배열크기 -1 까지 사용됨
- 배열명(변수명)을 사용하여 배열을 관리 가능(인덱스 번호 지정 필요)
- 배열 크기는 배열명.length 속성을 사용하여 알아낼 수 있음
<배열 기본 문법>
<배열 선언 기본 문법>
데이터타입[] 변수명;
=>변수 선언 방법과 유사하나 데이터타입 뒤에 브라켓[] 기호를 붙여서 배열을 표시
=> 배열 공간이 생성되기 전이므로, 아직 데이터 저장은 불가능
<배열 생성 기본 문법>
변수명 new 데이터타입[배열크기];
=> new 키워드를 사용하여 배열 공간을 생성하는데
데이터타입 뒤에 대괄호안에 배열 크기 명시
=>생성된 배열의 위치(주소값)를 선언된 배열 타입 변수에 저장
=>실제 메모리 공간이 생성되므로, 데이터 저장 가능함
=>생성된 배열에는 자동으로 인덱스 번호가 부여되며, 0부터 차례대로 인덱스가 부여됨'
(즉, 배열 인덱스는 0~ 배열크기-1까지 자동으로 부여됨)
<배열 선언 및 생성을 하나의 문장으로 결합한 문법>
데이터타입[] 변수명 = new 데이터타입[배열크기];
<배열 접근 기본 문법>
변수명[인덱스번호] 형태로 배열 공간에 접근
=> 지정된 배열의 인덱스에 접근하여 데이터 저장 또는 가져오기 가능
<배열의 모든요소(인덱스)에 접근하는 반복문 공식>
for(int i =0; i<배열명. length; i++{
// 배열 인덱스 접근
}
- <배열 생성과 동시에 리터럴을 지정하여 초기화를 수행하는방법>
데이터타입[] 배열명 = {값1, 값2, 값3, 값4, ...값n};
=> 값의 갯수에 따라 자동으로 배열을 생성하고 초기화 수행(0번 인덱스부터 차례대로 부여)
=> 주의!
데이터타입[] 배열명 = new 데이터타입[배열크기]{값1,값2,값3...,값n};
=> 주의! 문장을 분리하여 사용할 경우 다음 문장 형태 사용 불가!
데이터타입[] 배열명; //선언을 먼저한뒤
배열명 = {값1, 값2, ... 값n}; //초기화 문장을 따로 분리할 수 없음!
- <배열 생성 후 별도로 값을 한번에 초기화를 수행하는 방법>
데이터타입[] 배열명; // 변수 선언 후
배열명 = new 데이터타입[] {값1, 값2, 값3, ... 값n};
=> 배열 변수를 별도로 선언한 후 배열 생성 코드를 사용하여 한꺼번에 초기화 가능
단, 데이터 타입뒤에 [] 를 직접 명시하면 오류발생하므로 배열크기 생략
- 기본형 변수와 참조형 변수(배열)의 차이점
기본형(Primitive Type) 변수는 스택공간의 변수에 데이터를 직접 저장
참조형(Reference Type) 변수는 스택공간의 변수에 데이터를 직접 저장하지 않고,
힙(Heap)공간에 생성된 데이터가 저장된 공간의 주소값을 스택 공간의 변수에 저장한다.
(ex. 배열, String 타입 문자열 등)
=> 저장된 주소값을 "참조"하여 실제 데이터에 접근 하는 방식
=> 저장된 주소값이 없을 경우, 참조값이 없다는 의미의 null 이라는 특수 데이터 사용
(참조형 변수의 기본값은 null 이다)