1. 학습목표
배열을 이해할 수 있다.
책에 있는 배열파트 예제는 모두 다루어보겠다.
2.필요 개념 문장정리
배열(array)
- 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 배열이라고 한다.
- 중요한것은 같은 타입이어야 한다는 것이며 서로 다른 타입의 변수들로 구성된 배열은 만들수 없다.
- 원하는 타입의 변수를 선언하고 변수 또는 타입에 배열임을 의미하는 []를 붙이면 된다.
- 배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어질 뿐이고 배열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다. 배열을 생성하기 위해서는 연산자 new와 함께 배열의 타입과 길이를 지정해 주어야 한다.
타입[] 변수이름 = new 타입[길이]; // 배열의 선언과 동시에 생성 - 생성된 배열의 각 저장공간을 배열의 요소라고 하며 배열이름[인덱스]의 형식으로 배열의 요소에 접근한다. 인덱스는 배열의 요소마다 붙여진 일련번호로 각 요소를 구별하는데 사용된다. 인덱스는 1이 아닌 0부터 시작한다.
- 배열에 값을 저장하고 읽어오는 방법은 변수와 같다. 단지 변수이름 대신 배열이름[인덱스]를 사용한다.
- index로 상수 대신 변수나 수식도 사용할 수 있다.
- 주의할 점은 인덱스의 범위를 벗어난 값을 인덱스로 사용하지 않아야 한다는 것이다.
- 배열의 길이는 배열의 요소의 개수, 즉 값을 저장할 수 있는 공간의 개수다. 배열의 길이가 0일 수 도 있다.
- 배열이름.length를 통해서 배열의 길이에 대한 정보를 얻을 수 있다.
int[] arr = new int[5]; 길이가 5인 int배열
int tmp = arr.length; // arr.length의 값은 5이고 tmp에 5가 저장된다. - 배열이름.length는 상수다. 즉, 값을 읽을 수만 있을 뿐 변경할 수 없다.
- for문의 조건식에 배열의 길이를 직접 적어주는 것보다 배열이름.length를 사용하는 것이 좋다.
- 배열의 길이를 변경할 때에는 더 큰 길이의 새로운 배열을 생성한 다음 기존의 배열에 저장된 값들을 새로운 배열에 복사하면 된다.
- Arrays.toString(배열이름)메서드를 사용하면 배열의 모든 요소를 문자열로 만들어서 반환한다.
int[] iArr = { 100, 95, 80, 70, 60 };
System.out.println(Arrays.toSting(iArr)); // 배열 iArr의 모든요소를 출력한다. - iArr은 참조변수이기 때문에 변수에 저장된 값인 배열의 주소 타입@주소 형식이 출력된다.
3. 코드작성
배열의 범위
class ArrayEX1 {
public static void main(String[] args) {
int[] score = new int[5];
int k = 1;
score[0] = 50;
score[1] = 60;
score[k+1] = 70;
score[3] = 80;
score[4] = 90;
int tmp = score[k+2] + score[4];
for(int i=0; i < 5; i++) {
iArr1[i] = i + 1;
}
for(int i=0; i < iArr2.length; i++) {
System.out.printf("score[%d] : %d%n", i, score[i]);
}
System.out.printf("tmp : %d%n", tmp);
System.out.printf("score[%d] : %d%n", 7, score[7]); //인덱스의 범위를 벗어남
}
}
배열의 초기화와 출력
import java.util.*;
class ArrayEX2 {
public static void main(String[] args) {
int[] iArr1 = new int[10];
int[] iArr2 = new int[10];
int[] iArr3 = new int[] {100, 95, 80, 70, 60};
int[] iArr3 = {100, 95, 80, 70, 60};
char[] chArr = {'a', 'b', 'c', 'd'};
for(int i=0; i < iArr1.length; i++) {
iArr1[i] = i + 1;
}
for(int i=0; i < iArr2.length; i++) {
iArr2[i] = (int)(Math.random()*10) + 1;
}
System.out.println();
System.out.println(Arrays.toString(iArr2));
System.out.println(Arrays.toString(iArr3));
System.out.println(Arrays.toString(chArr));
System.out.println(iArr3); //배열을 출력하면 배열의 해시코드가 출력됨
System.out.println(chArr);
}
}
실행결과
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[3, 2, 8, 7, 8, 5, 1, 8, 9, 5]
[100, 95, 80, 70, 60]
[a, b, c, d]
[I@7ef20235 --실행할때마다 달라질 수 있다.
[a, b, c, d]
4. 마무리
배열의 초기화와 출력에 대해 이해할 수 있었다.
배열자체를 출력하면 값이 아닌 주소가 출력된다.
'언어 기초 > JAVA' 카테고리의 다른 글
[자바의정석 | Chapter 05 배열] 배열 예제5 ~ 11 (2) | 2024.01.10 |
---|---|
[자바의정석 | Chapter 05 배열] 배열 예제3,4 (1) | 2024.01.06 |
[자바의정석 | Chapter 04 조건문과 반복문] while,do-while문 (0) | 2024.01.04 |
[자바의정석 | Chapter 04 조건문과 반복문] for문, 향상된for문 (1) | 2023.12.18 |
[자바의정석 | Chapter 04 조건문과 반복문] if문, switch문 (0) | 2023.12.18 |