=== 배열(array)이란 ? ===
동일한 데이터타입을 가지는 여러개의 데이터를 저장할 수 있는 데이터 타입을 말한다.
배열 또한 객체라는 것을 꼭 기억하도록 하자!!!
배열은 변수와 밀접한 관련이 있다.
변수 : 어떠한 하나의 값을 저장하는 저장 공간.
=> 여러 개의 값을 저장하는 방법은, 새로운 변수를 생성하는 방법밖에 없으며, 여러 개의 새로운 변수를 생성한다고 하더라도 서로 연관이 없다.
같은 타입의 변수를 반복해서 선언하고 반복 사용하는 문제를 줄이기 위해 배열을 사용한다.
연관된 값들을 한 번에 관리하고 처리하기 위해서 배열이 필요하다.
int[] student; //배열 변수 선언
student = new int[5]; // 배열 생성- 방 5개 생성: 0,1,2,3,4(배열은 0부터 시작)
===>
int[] student = new int[5]; 로 생성 가능, x001 참조값 반환
student = x001 //최종 결과
// 총 5개의 int형 변수가 만들어지며 0으로 초기화된다.
// 숫자는 0, boolean은 false, String은 null로 초기화된다.
student를 이용해서 배열의 참조값(메모리 주소)를 통해 메모리에 있는 실제 배열에 접근하고 사용할 수 있다. 배열은 참조 변수이기 때문에 값이 아니라 주소를 저장한다. (new 등장)
*배열은 0부터 시작한다.
student[0] = 90; // 1. 배열에 값을 대입
x001[0] = 90; //2. 변수에 있는 참조값을 통해 실제 배열에 접근한 뒤 인덱스를 사용해서 해당 위치에 접근, 값 대입
/*
--------------------------
| 0 | 1 | 2 | 3 | 4 |
------------------------
위의 숫자는 배열의 인덱스(index)를 가리키는 번호로써 0 부터 시작하여 1씩 증가한다.
배열의 인덱스(index)를 "배열의 방번호" 라고 흔히 부른다.
배열에 저장된 데이터를 표현할때는 아래와 같이 배열명[인덱스번호]로 나타낸다.
(!) 배열인덱스에 저장되어 있는 값이 int이기 때문에 방을 가리키는 변수의 타입은 int가 된다(int[] 아님)
student = 90; 불가 student[2] = 90; 가능
student[1] : int 타입
student : 배열 타입
1)int[] student = new int[5]; // 5개 방만 만든 상태 = 0,0,0,0,0 저장
2)int[] student = new int[] {1, 2, 3, 4, 5};
// 5개 방 인덱스 0,1,2,3,4에 1,2,3,4,5를 저장함
3)int[] student;
student = new int[5]; // 선언만 해두고 다른 위치에서 초기화 할때
char[] charArr = new char[10];
for(int i = 0; i < charArr.length; i++ {
charArr[i] = 67 + i;//10개에 A부터 J까지 넣는다
}
for문의 조건문에서 리터럴 값이 아닌 배열의 길이만큼 넣는 것이 좋다.
1차원 배열은 인덱스를 하나만 가지고, 2차원 배열은 인덱스를 2개만 가진다.
int[][]arr = new int[3][4]; //[열][행]
int[][]arr = new int[3][4];
arr[0][0] = 10;
arr[0][1] = 20;
arr[0][2] = 30;
System.out.println("arr.length=" + arr.length);
// arr.length는 4가 나온다. 4는 행의 길이가 나온다.