기본 자료형 배열
- 배열이란 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
1. 배열의 선언
- 타입 뒤나 변수이름 뒤에 []를 붙이면 된다.
int[] score;
int score[];
2. 배열의 선언과 생성
int[] score;
score = new int[5];
int[] score = new int[5];
- 두 코드 모두 동일한 코드이다.
- lvalue의 []안의 숫자는 배열의 길이를 의미한다.
- 초기화할 배열의 요소의 값을 지정하지 않으면 배열의 타입의 기본값으로 초기화 된다. ( 위의 경우는 int형의 기본값 0 )
3. 배열의 길이와 인덱스
int[] score = new int[5] { 1, 2, 3, 4,5 };
int len = score.length;
- 배열의 길이는 위와 같이 "배열의 변수이름".length를 통하여 얻을 수 있다.
- 배열의 인덱스는 0부터 시작하며 마지막 인덱스는 배열의 길이 - 1이다.
- 배열의 길이는 음이 아닌 정수이다. 즉 0도 포함한다는 것이다.
- 배열의 길이는 이론 상 int형의 최대값이며, 이렇게 긴 경우는 드물기에 거의 제약이 없다고 알면 된다.
4. 배열의 초기화
int[] score = new int[] { 50, 60, 70, 80, 90 };
int[] score;
score = new int[] { 50, 60, 70, 80, 90 };
int[] score = { 50, 60, 70, 80, 90 };
- 세 코드 모두 동일한 코드이다.
- 배열의 길이를 생략하면 초기화 하고자하는 element의 수를 계산하여 배열의 길이가 자동으로 결정된다.
- 배열의 선언과 생성(초기화)을 동시에 할 경우 "new int[]"도 생략이 가능하다.
5. 배열의 복사
- 새로운 배열을 만든 후 복사 ( 비효율적 )
- System.arraycopy()를 이용 ( 효율적 )
6. 기타
- 2차원 배열, 다차원 배열, 가변 배열 모두 원리가 동일하다.
String 배열
- 모든 것이 기본 자료형 배열과 동일하나 String은 클래스이므로 new String("string")으로 생성하여야 하지만, String의 경우만, "string"으로 표현하는 것을 허용한다.
String[] name = new String[3];
name[0] = new String("kim");
name[1] = new String("jong");
name[2] = new String("woon");
String[] name = new String[3];
name[0] = "kim";
name[1] = "jong";
name[2] = "woon";
String[] name = new String[] { "kim", "jong", "woon" };
String[] name = { "kim", "jong", "woon" };
- 위 코드들은 모두 동일한 코드들이다. 강한 표현에서 약한 표현을 지원할 뿐, 기본 원리는 동일하다.
- 초기화할 배열의 요소의 값을 지정하지 않으면 배열의 타입의 기본값으로 초기화 된다.
( 위의 경우는 String형은 참조형이므로 기본값 null )