해당 글은 남궁성님의 자바의 정석을 학습 후에 작성되었습니다.
배열이란
배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
int[] score = new int[5];
위와 같은 형식으로 배열을 선언하면 저장 공간이 생긴다.
위의 예제에서는 5개의 저장공간이 생기는데 해당 공간에는 자동으로 0부터 번호가 붙는데 그 숫자를 배열의 인덱스 라고 부른다.
배열의 선언과 생성
배열의 선언은 변수의 선언과는 조금 다르다
변수는 선언과 동시에 저장 공간이 만들어지는데, 배열을 선언할 경우 저장 공간이 만들어지는 것이 아닌 참조 변수가 선언 되는 것이다.
배열의 선언 - 배열을 다루기 위한 참조변수의 선언
선언 방법
- 타입[] 변수이름;
- int[] score;
- String[] name;
- 타입 변수이름[];
- int score[];
- String name[];
// 타입[] 변수이름; - 배열 선언 (배열을 다루기 위한 참조변수의 선언)
int[] score; // int타입의 배열을 다루기 위한 참조변수 score 선언
// 변수이름 = new 타입[길이]; - 배열 생성 (실제 저장공간을 생성)
score = new int[5]; // int 타입의 값 5개를 저장할 수 있는 배열 생성
배열의 인덱스
각 요소에 자동으로 붙는 번호
인덱스의 범위는 0부터 '배열길이-1'까지이다.
int[] score = new int[5]; // 길이가 5인 int 배열
해당 배열의 인덱스는 0~4까지이다.
배열의 길이
배열이름.length
- int 형 상수
배열은 한 번 생성하면 그 길이를 바꿀 수 없다.
int[] arr = new int[5];
int tmp = arr.length;
System.out.println(tmp); // 5
배열의 초기화
배열의 각 요소에 처음으로 값을 저장하는 것
int[] score = new int[5];
score[0] = 50; // 이걸 초기화라고 한다!!
배열은 기본값으로 초기화 된다.
int 타입의 경우 기본값이 0이므로 0으로 초기화 된다.
그러나 우리가 저장하려는 값이 항상 0은 아니니까 보통 반복문으로 초기화를 한다!!
타입별 기본값
자료형 | 기본값 |
---|---|
boolean | false |
char | 'iu0000' |
byte, short, int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d 또는 0.0 |
참조형 | null |
예제)
// 1번 예제
int[] score = {50,60,70,80,90};
// 2번 예제
int[] score = new int[5];
for(int i=0;i<score.length;i++){
score[i] = i*10+50;
}
위의 예제를 두 줄로 나눌 경우 error가 발생한다.
두 줄로 초기화 하고 싶을 경우 2번과 같이 사용해야 한다.
int[] score;
score = {50,60,70,80,90}; // error
배열의 출력
배열의 출력은 배열 이름으로 할 수 없다
(char 타입의 배열은 예외로 배열 이름으로 출력 가능하다)
int[] score = {50,60,70,80,90};
System.out.println(score);
// 배열의 이름을 출력할 경우 [I@14318bb]와 같은 형식의 문자열이 출력된다.
// 배열의 이름으로 출력 가능한 경우는 유일하게 배열이 char 타입일 경우에만 가능하다.
char[] cArr = {'a','b','c'};
System.out.println(cArr); // abc
배열 요소를 출력하고 싶을 경우, for문과 같은 반복문이나 Arrays.toString을 통해 출력할 수 있다.
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
System.out.println(Arrays.toString(arr));
'웹 프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] break문, continue 문, 이름 붙은 break 문 (0) | 2022.02.02 |
---|---|
[JAVA] 반복문 - for문, 중첩 for문, while문, do-while문 (0) | 2021.12.06 |
[JAVA] switch문 (0) | 2021.12.06 |
[JAVA] 연산자 (0) | 2021.11.19 |
[JAVA] CountDownLatch란? (0) | 2021.10.28 |