java 입문(6) 배열
배열은 같은 타입의 변수를 사용하기 편하게 하나로 묶어둔 것이다.
배열의 변수 선언 방식은 다음과 같다.
int[] students; //배열 변수 선언
선언한 타입에 맞는 값들만 배열에 들어갈 수 있으며, 배열을 사용하기 위해서는 다음과 같이 배열을 생성해줘야 한다.
students = new int[5];
new int [5]를 하면 0으로 자동 초기화된 변수 5개를 저장가능한 int 공간이 생성된다고 보면 된다.
배열에는 참조값(메모리 주소)도 보관이 가능하다.
참조값에서 파생된 이야기인데, 배열의 자료형은 바로 참조형이라고 불린다. 그 이유는 동적으로 사이즈를 변경해야 하기 때문이다.
자세히 설명하자면, 자바의 자료형은 가장 포괄적으로 분류할 때 사용하는 값을 직접 넣을 수 있는 기본형, 그리고 배열 변수와 같이 메모리의 참조값을 넣을 수 있는 참조형으로 분류할 수 있다.
예를 들면,
기본형: `int` , `long` , `double` , `boolean`처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입이다.
참조형: `int[] students` 와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을 참조형이라 한다.
기본형은 사용할 값을 직접 저장한다. 반면에 참조형은 메모리에 저장된 배열이나 객체의 참조를 저장한다. 이로 인해 참조형은 더 복잡한 데이터 구조를 만들고 관리할 수 있다. 반면 기본형은 더 빠르고 메모리를 효율적으로 처리한다.
다시 배열로 돌아와, 자바는 배열에 대하여 {} 만 사용해서 생성과 동시에 편리하게 초기화 하는 기능을 제공한다.
int[] students = {90, 80, 70, 60, 50};
이 경우 students = int[5]; 가 없지만 java 내부에서 위의 코드를 읽으며 이 코드를 사용하여 배열을 자동으로 만들어준다.
2차원 배열은 `int[][] arr = new int [2][3]` 와 같이 선언하고 생성한다. 앞이 행 번호, 그다음이 열 번호이다.
배열의 경우 For문을 좀더 편하게 활용가능하다.
int[] numbers = {1, 2, 3, 4, 5};
// 향상된 for문, for-each문
for (int number : numbers) {
System.out.println(number);
}
//일반 for문
for(int i = 0; i < numbers.length; ++i) {
int number = numbers[i];
System.out.println(number);
}