- 타입[] 변수이름;
int[] score; String[] name;
- 타입 변수이름[];
int score[]; String name[];
타입[] 변수이름;
변수이름 = new 타입[길이];int[] score; //1. 배열을 선언(배열을 다루기 위한 참조변수 선언) score = new int[5]; //2. 배열을 생성(실제 저장공간을 생성)
1. int[] score;
- int형 배열 참조변수 score을 선언한다. 데이터를 저장할 수 있는 공간은 아직 마련되지 않았다.
2. score = new int[5];
- 연산자 new에 의해서 메모리의 빈 공간에 5개의 int형 데이터를 저장할 수 있는 공간이 마련된다.
초기화
- 그리고 각 배열 요소는 자동적으로 int의 기본값(default)인 0으로 초기화된다.
- 마지막으로 대입연산자'='에 의해 배열의 주소가 int형 배열 참조변수 score에 저장된다.
int[] arr = new int[0]; //길이가 0인 배열도 생성이 가능하다!!
배열이름.length
를 통해서 배열의 길이를 알 수 있다.int[] score = new int[]{50,60,70,80,90}; //배열의 생성과 초기화를 동시에
int[] score = {50,60,70,80,90}; //new int[]를 생략할 수 있다.
new int[]
를 생략할 수 없다.int[] score;
score = new int[]{50,60,70,80,90}; //OK
score = {50,60,70,80,90}; //ERROR. 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}; for(int i=0; i<iArr.length; i++) { System.out.println(iArr[i]); }
- 하지만 더 간단한 방법은
Arrays.toString(배열이름)
메서드를 사용하는 것이다.int[] iArr = {100,95,80,70,60}; System.out.println(Arrays.toString(iArr));
- 예외로는 char배열은 println메서드로 출력하면 각 요소가 구분자없이 그대로 출력되는데, 이것은 println메서드가 char배열에서만 이렇게 동작하도록 되어있기 때문이다.
char[] chArr = {'a','b','c','d'}; System.out.println(chArr); //abcd가 출력이 된다.
arraycopy
를 사용하면 보다 간단하고 빠르게 배열을 복사할 수 있다.arraycopy
는 범위의 값들을 한번에 통째로 복사한다.arraycopy
를 사용하는 것이 효율적이다.for문을 이용한 복사
for(int i=0;i<num.length;i++){ newNum[i] = num[i]; }
arraycopy
을 이용한 복사//num[0]에서 newNum[0]으로 num.length개의 데이터를 복사. System.arraycopy( num, 0, newNum, 0, num.length );
- String 배열의 참조형변수의 기본값은 null이므로 각 요소의 값은 null로 초기화된다.
String[] name = new String[3]; //3개의 문자열을 담을 수 있는 배열을 생성한다.
String[] name = new String[]{"Kim","Park","Yi"};
String[] name = {"Kim","Park","Yi"}; //new String[]을 생략할 수 있다.
String클래스의 주요 메서드
char charAt(int index)
: 문자열에서 해당위치(index)에 있는 문자열을 반환한다.
int length()
: 문자열의 길이를 반환한다.
String substring(int form,int to)
: 문자열에서 해당범위(from~to)에 있는 문자열을 반환한다. (to는 범위에 포함되지 않음)
boolean equals(Object obj)
: 문자열의 내용이 obj와 같은지 확인한다. 같으면 결과는 true, 다르면 false가 된다.
char[] toCharArray()
: 문자열을 문자배열(char[])로 변환해서 반환한다.
char[] chArr = {'A','B','C'};
String str = new String(chArr); //char배열 -> String
char[] tmp = str.toCharArray(); //String -> char배열
- 타입[][] 변수이름;
int [][] score;
- 타입 변수이름[][];
int score[][];
- 타입[] 변수이름[];
int[] score[];
- 예시
int[][] score = new int[4][3]; //4행3열의 2차원 배열을 생성한다.
for(int[] tmp : score) { //score의 각 요소(1차원배열 주소)를 tmp에 저장
for(int i : tmp) { //tmp는 1차원 배열을 가리키는 참조변수
sum += i;
}
}
int[][] score = new int[5][] //두번째 차원의 길이는 지정하지 않는다.
score[0] = new int[3];
score[1] = new int[4];
score[2] = new int[2];
score[3] = new int[1];
score[4] = new int[3];