728x90
1. 배열이란?
- 배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
- 즉 int 형 10개의 변수를 하나의 묶음으로 다루거나 String 형 10개의 변수를 하나의 묶음으로 다루는 것이 가능
int[] score = new int[5]; // int 값 5 개를 저장 할 수 있는 score 배열 생성
!!! 배열에는 자동으로 인덱스 == 저장 공간이 만들어짐. 이때 인덱스 번호는 1이 아닌 0부터 시작!
2. 배열의 생성과 선언
- 배열의 선언 - 배열을 다루기 위해 참조 변수의 선언 ⇒ 선언 방법은 아래 2가지
// 1. 배열 선언
타입[] 변수이름; // 이쪽을 보통 더 선호
타입 변수이름[];
// 2. 배열 선언+길이 지정
int[] score; // int 타입의 배열을 다루기 위한 참조변수 score 선언
score = new int[5]; // int 타입의 값 5개를 저장 할 수 있는 배열 생성
// 이때 인덱스는 0부터 시작하기에,0 1 2 3 4 까지가 인덱스의 번호가 됨
3. 배열의 인덱스
- 배열의 인데스 - 배열의 저장공간에 자동으로 붙는 번호 ⇒ 0부터 시작!!!!!!
- 예를 들어 길이가 10인 int 배열이 있다면, 시작하는 인덱스 범위는 0 ~ 9
int[] score = new int[5]; // 길이가 5인 score 배열
score[3] = 100; // 배열의 3번 인덱스(4번째)에 100 값 저장
int value = score[3]; // value 변수에 score 배열의 3번 인덱스(4번째) 값 저장
4. 배열의 기초 : 참조변수 선언, 배열 생성
static void array_1() {
//int[] result; // 배열 result(참조변수) 선언
//result = new int[5]; // 배열 생성(int 저장공간 x 5)
// 위 2줄을 합쳐서
int[] result = new int[5];
result[1] = 100;
System.out.println(result[1]);
int value = result[1];
System.out.println("value = "+value);
}
5. 배열의 길이
- 배열 길이 : 배열이름.length 사용(int형 상수)
- 배열의 길이는 int 형 상수이기 때문에 한번 생성하면 그 길이를 바꿀 수 없음
int[] arr = new int[5]; // 길이가 5인 int 배열
int tmp = arr.length; // arr.length 의 값은 5이고 tmp에 5가 저장된다
근데 여기까지만 보았을 때 다음과 같은 2가지 의문사항이 생긴다.
1) 만약 내가 생성한 배열의 크기를 왜 못 바꿀까? && 내가 생성한 배열의 크기가 부족한 경우 어떻게 할까?
- 예를 들어 int 형 5개의 배열인 경우 메모리에 연속적인 20byte(4byte X 5)의 공간이 가 필요하다. 그런데 이때 내가 추가로 공간을 늘리려고 하면 먼저 생성한 20byte 메모리 값 뒤에 새로 배열의 값을 넣을 수 있는 연속적인 공간이 공간이 있어야 한다. 그러나 우리는 바로 뒤에 연속적인 메모리 공간이 있다고 확신할 수 없다. 이러한 메모리 크기 문제 때문에 쉽게 배열의 크기를 바꿀 수 없고, 배열의 크기가 부족해서 더 추가하려고 할 경우에는 새로 배열을 생성해야 한다.
2) 여기서 한 가지 더!! 그러면 내가 배열의 전체 크기를 알 수 없는 상태에서 배열을 생성할 수 있을까?
- 예를 들어 특정한 숫자(n)를 입력받고 그 입력받은 숫자까지를 배열에 넣으려고 하면(1~n 까지 배열에 넣기) 나는 배열의 전체 크기를 모른채 배열을 생성해야 한다. 아래처럼 물론 배열의 크기를 n 으로 주고 배열을 생성하면 되지만 ArrayList 라는 클래스를 사용하여 가변적인 크기의 배열을 생성하면 보다 쉽게 생성이 가능하다.
Scanner scan = new Scanner(System.in);
int num = scan.nextInt(); // num 값을 입력받음
// 기본적인 배열 생성 : 기본적으로는 이번 방법 이지만,
int[] array = new int[num];
for(int i=0; i<array.length; i++){ // 배열 이름.length 사용
array[i]=i+1;
System.out.println(i+"번째 값 = "+array[i]);
}
// ArrayList 사용 : 요렇게 사용하는 방법도 있따!
ArrayList<Integer> array_2 = new ArrayList<Integer>(); // 따로 배열 크기 입력X
for(int i=0; i<num; i++) {
array_2.add(i, i+1); // i 번째 방에 i+1 값 저장
}
for(Integer j : array_2) {
System.out.println(j+"번째 값 = "+j);
}
※ 다만 ArrayList 는 내용이 뭐가 엄청 많아서...나중에 다루도록 하겠다.
6. 배열의 초기화
- 배열의 각 요소에 처음으로 값을 저장하는 것
- 변수의 초기화와 사실상 동일
int[] score = new int[] {50,60,70,80,90}; //
int[] score = {50,60,70,80,90}; // new int[] 생략 가능
7. 배열의 출력
- int[] iArr = {100, 90, 80, 70, 60}
- 이때 단순히 iArr 을 출력했을 때 [I@14318bb] 와 같은 형식의 주소값이 출력된다. 이때 @ 앞의 I 는 Integer , @ 뒤는 iArr 배열의 주소값을 의미한다.
- 예외적으로 char 배열의 경우 그대로 배열 안의 값이 출력된다.
- 기본적으로 배열 요소를 출력하기 위해서는 for문 혹은 Arrays 클래스를 사용한다.
// for 문 사용
int[] iArr = {100, 90, 80, 70, 60}
for(int i=0; i<array.length; i++){
System.out.println("iArr["+i+"] = "+iArr[i]);
}
// Arrays 클래스 사용
System.out.println(Arrays.toString(iArr)); // 이때 값은 String 으로 변환되어 출력됨
'Java - 기본기' 카테고리의 다른 글
11. String 배열의 선언과 생성, 커맨드라인에서 입력받기(feat. 가위바위보 게임) (0) | 2021.10.13 |
---|---|
10. 배열 다루기 활용편 (2) : 총합, 평균, 섞기, 로또 만들기 (0) | 2021.10.11 |
8. 조건문과 반복문 기초&활용(3) - break, contiune, 이름붙은 반복문(feat. 미니 게임 만들기 & 제곱근, 로그 계산기) (0) | 2021.10.04 |
7. 조건문과 반복문 기초&활용 (2) : for, while, do ~ while (0) | 2021.10.01 |
6. 조건문과 반복문 기초&활용 (1) (0) | 2021.09.27 |
댓글