- 여태까지 사용한 변수는 자료를 한 개 담기 위한 저장공간이었습니다.
- 하지만 값을 여러 개를 한 번에 컨트롤하고 싶을 수도 있겠죠?
- 이런 경우 여러 자료를 한번에 처리하는 배열이라는 기능을 사용합니다.
- 학생 100명을 student001~student100까지 선언하는 것보다는 students라고 한 번만 선언하는 것이 편합니다.
- 이번 강좌에서는 자바의 배열에 대해서 배워보도록 하겠습니다.
1. 배열 선언과 초기화
- 배열도 변수처럼 사용하려면 선언을 해야 합니다.
- 다른 언어(JS)와 다른 점은 개수도 지정해줘야 한다는 점입니다.
1) 배열 선언 문법
## 배열 문법
자료형[] 배열명 = new 자료형[개수];
자료형 배열명[] = new 자료형[개수];
- 배열도 참조형으로 클래스화되어 있는 객체입니다.
- 그래서 new라는 키워드를 사용해서 배열 인스턴스를 생성해주는 겁니다.
- 위의 문법 중 선택해서 사용하면 됩니다.
- 둘의 차이는 한개 선언 시에는 문제가 없는데 여러 개를 한 번에 선언 시 차이가 있습니다.
- 그건 아래에서 코드로 보겠습니다.
- 패키지(ch18_array)와 클래스(Ex01_Array.java)를 생성해 주세요.
## 배열 한 개 선언 코드 - Ex01_Array.java
package ch18_array;
public class Ex01_Array {
public static void main(String[] args) {
int[] nums01 = new int[10];
int nums02[] = new int[10];
System.out.println(nums01);
System.out.println(nums02);
}
}
- 다른 문법으로 배열을 선언해 봤습니다.
- 배열 한 개는 4바이트고, 10개니까 총 40바이트를 차지합니다.
## 배열 한개 선언 결과 - Ex01_Array.java
- 둘 다 주소를 참조하고 있는 것을 확인할 수 있습니다.
2) 배열 초기화하기
- 이번에는 배열 값을 초기화시키는 작업을 해보겠습니다.
## 배열 초기화 문법
자료형[] 배열명 = new 자료형[] {값1, 값2, 값3, ...};
자료형[] 배열명 = {값1, 값2, 값3, ...};
- 초기화할 때는 값을 배당시켜 주기 때문에 개수를 적지 않습니다.
- new 자료형 [] 을 생략해도 처리가 됩니다.
- 자료형, 배열명에 붙는 대괄호는 어디에 있든 상관은 없습니다.
## 배열 초기화 코드 - Ex02_Array.java
package ch18_array;
public class Ex02_Array {
public static void main(String[] args) {
int[] nums01 = new int[] {1,2,3};
int[] nums02 = {1,2,3};
//int[] nums03 = new int[3] {1,2,3};
System.out.println(nums01);
System.out.println(nums02);
}
}
- nums03처럼 개수를 작성하면 에러가 납니다.
- 그래서 앞에 주석처리를 했습니다.
## 배열 초기화 결과 - Ex02_Array.java
- 역시 주소를 참조하는 것으로 나옵니다.
3) 배열값 할당하기
- 위에서는 처음부터 초기화시킨 겁니다.
- 하지만 추후에 배열 값을 주고 싶을 수도 있습니다.
- 그럴 때의 문법을 보도록 하겠습니다.
## 배열 값할당 문법
배열명[인덱스번호] = 값;
- 인덱스번호는 배열의 위치값을 말합니다.
- 이때 0번부터 시작한다는 것을 알아야 합니다.
- 배열을 {10,20,30,40,50} 이렇게 5개 선언했다고 보겠습니다.
인덱스번호 | 0 | 1 | 2 | 3 | 4 |
값 | 10 | 20 | 30 | 40 | 50 |
- 이런 식으로 인덱스번호를 할당받습니다.
## 배열 값할당 코드 - Ex03_Array.java
package ch18_array;
public class Ex03_Array {
public static void main(String[] args) {
int[] nums01 = new int[3];
int[] nums02 = new int[10];
//각각 할당
nums01[0] = 10;
nums01[1] = 20;
nums01[2] = 30;
//반복문 통해서 할당
for(int i=0;i<nums02.length;i++) {
nums02[i] = (i + 1) * 10;
}
System.out.println(nums01[0]);
System.out.println(nums01[1]);
System.out.println(nums01[2]);
System.out.println(nums02[5]);
}
}
- 첫 번째 nums01에는 각각 할당을 해봤습니다.
- 그리고 nums02는 10개라 너무 많아서 반복문을 통해 할당을 했습니다.
- 이때 num02.length 는 배열의 개수를 반환하는 속성입니다.
- 10이라고 적어도 맞았겠지만, 배열의 개수가 달라질 수도 있으니 length속성을 사용해 주세요.
## 배열 값할당 결과 - Ex03_Array.java
- 마지막은 5지만 인덱스번호니까 6번째 위치에 있는 값을 가져왔기 때문에 60으로 반환이 됩니다.
4) 여러 배열을 한 번에 선언하기
- 배열도 변수처럼 배열을 여러 개 한번에 선언할 수 있습니다.
- 이때 문법에 차이가 있기 때문에 정확히 알고 가야 합니다.
## 여러 배열 한번에 선언하는 문법
//arr1: 배열, arr2: 배열 => 둘다 배열로 처리
int[] arr1, arr2;
//arr3: 배열, arr4: 변수 => 각각 처리됨
int arr3[], arr4;
- 헷갈리면 그냥 각각 선언하는 것이 좋습니다.
- 저는 그래서 자료형 뒤에 붙여 쓰는 것을 선호하긴 합니다.
## 여러 배열 선언 코드 - Ex04_Array.java
package ch18_array;
public class Ex04_Array {
public static void main(String[] args) {
int[] arr1, arr2;
int arr3[], arr4;
arr1 = new int[] {1,2,3};
arr2 = new int[] {1,2,3};
arr3 = new int[] {1,2,3};
//arr4 = new int[] {1,2,3};
arr4 = 10;
System.out.println(arr1);
System.out.println(arr2);
System.out.println(arr3);
System.out.println(arr4);
}
}
- arr4는 변수이기 때문에 배열을 담으면 에러가 발생됩니다.
## 여러 배열 선언 결과 - Ex04_Array.java
- 위의 3개는 배열이라 주소를 참조하고, arr4는 변수라 10인 값(리터럴)을 반환하는 것을 확인할 수 있습니다.
- 그럼 아래 문제를 배열로 만들어 보세요.
배열에 알파벳 A~Z까지 26개를 담은 후 한개씩 출력하시오.
예시) 1: A
...
26: Z
- 혼자 풀어 본 후 더보기 버튼을 눌러 주세요.
## 알파벳을 배열에 담기 코드 - Ex05_ArrayAlphabet.java
package ch18_array;
public class Ex05_ArrayAlphabet {
public static void main(String[] args) {
//26개를 담을 변수
char[] alphabets = new char[26];
//A~Z까지를 각각 담을 변수, 초기값은 A로 처리
char ch = 'A';
//26번 반복
for(int i=0;i<alphabets.length;i++) {
alphabets[i] = ch; //배열에 알파벳 담기
System.out.println((i + 1) + " : " + alphabets[i]);
ch++;
}
}
}
## 알파벳을 배열에 담기 결과 - Ex05_ArrayAlphabet.java
'컴퓨터언어 > JAVA(자바)' 카테고리의 다른 글
[JAVA강좌] 28강 객체 배열 생성 (0) | 2024.01.26 |
---|---|
[JAVA강좌] 27강 향상된 for문과 배열 (0) | 2024.01.26 |
[JAVA강좌] 25강 static과 싱글톤패턴 (0) | 2024.01.18 |
[JAVA강좌] 24강 여러 클래스 생성 후 객체 협력 (0) | 2024.01.17 |
[JAVA강좌] 23강 접근제어자와 정보은닉 (0) | 2024.01.17 |