배열
Array
배열은 같은 타입의 변수들로 이루어진 유한 집합으로 정의할 수 있습니다.
배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자를 인덱스(index)라고 한다.
Java에서 index는 언제나 0부터 시작하며, 0을 포함한 양의 정수만을 가질 수 있다.
배열은 같은 종류의 데이터를 많이 다뤄야 하는 경우에 사용할 수 있는 가장 기본적인 자료 구조이다.
배열은 선언되는 형식에 따라 1차원 배열, 2차원 배열뿐만 아니라 그 이상의 다차원 배열로도 선언할 수 있다.
1차원 배열
1차원 배열은 가장 기본적인 배열로 다음과 같은 문법에 따라 선언한다.
1. int[] grade1; // 타입[] 배열_이름;
2. int grade1[]; // 타입 배열_이름[];
// 배열_길이 & 초기화 없이 배열 참조변수만 선언
타입은 배열 요소로 저장되는 변수의 타입을 명시한다.
배열 이름은 배열이 선언된 후에 배열에 접근하기 위해 사용된다.
위와 같이 선언된 배열은 new 키워드를 사용하여 실제 배열로 생성할 수 있다.
grade1 = new int[3]; // 배열_이름 = new 타입[배열_길이];
배열의 길이는 해당 배열이 몇 개의 배열 요소를 가지게 되는지 명시한다.
또한, 다음과 같이 배열의 선언과 생성을 동시에 할 수도 있다.
int[] grade1 = new int[3]; // 타입[] 배열_이름 = new 타입[배열_길이];
int grade1[] = new int[3]; // 타입 배열_이름[] = new 타입[배열_길이];
// 선언과 동시에 배열_길이 할당
// []가 타입 뒤에 오나 배열_이름 뒤에 오나 동일하게 배열의 선언 및 생성을 할 수 있다.
Java에서는 이러한 배열도 모두 객체이므로, 각각의 배열은 모두 자신만의 필드와 메소드를 가지고 있다.
배열 선언 및 사용
예를 들어 내가(Weixin)이 근무하고 있는 회사의 부서에는 4명의 동업자들이 있다.
회사의 각 부서는 배열과 비슷한 점을 가지고 있기 때문에 비유한 동업자들을 통해 배열을 생성하고 예제를 살펴 보자.
public class ArrayEx01 {
public static void main(String[] args){
String[] coworkers = {"Weixin","Lingcai","Yunzhu","Jason"};
System.out.println(coworkers[0]); // index number 0 = Weixin
System.out.println(coworkers[1]); // index number 1 = Lingcai
System.out.println(coworkers[2]); // index number 2 = Yunzhu
System.out.println(coworkers[3]); // index number 3 = Jason
}
}
coworkers라는 String[ ] 변수에 데이터(배열요소, element)를 저장했다. 저장한 데이터들을 출력하기 위해서는 index number 가 붙는다. 여기서 index number는 데이터를 저장한 순서대로 0부터 시작하여 1씩 증가하여 만들어진다. 여기서는 부서 안에 동업자를 구분하기 위한 구분자라고 생각하면 된다. 즉, coworkers라는 배열에 0~3까지의 index number를 가진 4개의 공간(length)에 데이터들이 저장되어 있다.
이것을 그림으로 본다면 아래와 같다.
배열의 길이(length) | 4 | |||
데이터 값 (element) | Weixin | Lingcai | Yunzhu | Jason |
구분자 (index) | 0 | 1 | 2 | 3 |
배열의 초기화
자바에서는 변수와 마찬가지로 배열도 선언과 동시에 초기화할 수 있다.
다음과 같이 괄호({})를 사용하여 초깃값을 나열한 것을 초기화 블록(initialization block)이라고 한다.
자바에서는 이러한 초기화 블록을 이용하여 배열을 선언과 동시에 초기화할 수 있다.
초기화 블록을 이용한 배열의 초기화 방법은 다음과 같다.
1. 타입[] 배열_이름 = {배열요소1, 배열요소2, ...};
2. 타입[] 배열_이름 = new 타입[]{배열요소1, 배열요소2, ...};
위의 두 가지 초기화 방법은 완전히 같은 결과를 반환하며, 초기화 블록에 맞춰 자동으로 배열의 길이가 설정된다.
하지만 다음과 같은 경우에는 첫 번째 방법이 아닌 두 번째 방법만을 사용하여 초기화해야 한다.
1. 배열의 선언과 초기화를 따로 진행해야 할 경우
2. 메소드의 인수로 배열을 전달하면서 초기화해야 할 경우
예제
int[] grade1 = {70,90,80}; // 배열의 선언과 동시에 초기화 할 수 있음.
int[] grade2 = new int[]{70,90,80}; // 배열의 선언과 동시에 초기화 할 수 있음.
int[] grade3;
// grade3 = {70,90,80} // 이미 선언된 배열을 이 방법으로 초기화하면 오류가 발생함.
int[] grade4;
grade4 = new int[]{70,90,80}; // 이미 선언된 배열은 이 방법으로만 초기화 할 수 있음.
위의 예제처럼 초기화 블록의 타입과 배열의 타입은 반드시 일치해야 한다.
Reference
1. TCP School - JAVA - 23) 1차원 배열
2. JOKER's ROOM - [JAVA/자바] 배열(Array) 선언 및 사용 방법
3. IfUwanna - [Java] 배열(Array) 선언 및 초기화 하기
'JAVA' 카테고리의 다른 글
[JAVA] Exception in thread "main" java.lang.ArithmeticException: / by zero (2) | 2022.03.09 |
---|---|
JAVA - 반복문 (for문) (0) | 2022.02.05 |
JAVA - 스캐너 클래스 (Scanner Class) (0) | 2022.01.26 |
JAVA - 객체 지향 프로그래밍 (OOP) (16) | 2022.01.12 |
JAVA - 변수(Variable) (0) | 2021.12.15 |